오버로딩 overloading 과적.


한 클래스 안에 같은 이름의 메소드를 여러개 정의
대표적인 예로 println이 있다.

이름만 같다고 다 오버로딩인건 아니다. 성립하기 위한 조건이 있다.
이 조건들을 모두 만족하지 않으면 그저 메소드 중복 정의 일 뿐이다.

1) 메소드 이름이 같을 것
2) 매개변수의 개수 또는 타입이 달라야 한다.
3) 반환 타입은 상관 없다.

 

 

대표적인 오버로딩의 예

 



 

 

 

 

생성자

인스턴스가 생성될때마다 호출되는 인스턴스 초기화 메소드
iv 초기화 메소드.

Time t = new Time();  // 여기서 Time() 부분이 기본 생성자 호출이다.
t.hour = 12;
t.minute = 34;
t.second = 59;

Time t = new Time(12,34,59);

 

인스턴스 생성 시 수행될 코드이다.
주로 인스턴스 변수의 초기화 코드를 적는다.

 

생성자 사용 규칙

1) 이름이 클래스 이름과 같아야 한다.
2) 리턴값이 없다. (void 안붙이는데도)
3) 모든 클래스는 반드시 1개 이상의 생성자가 있다.

 

 

 


1. 기본 생성자 : 매개변수가 없는 생성자



클래스이름()  { } 

 

원래는 직접 작성하는 것인데
하나도 없을 때, 컴파일러가 자동으로 추가해준다.

하나라도 생성자가 있으면 컴파일러는 자동 추가를 해주지 않아서 사용자가 직접 추가해야 한다.

 

 

위 코드에서 객체 d2에 오류가 발생한 이유 : 

 

class Data_1 에도 calss Data_2 에도 기본 생성자는 존재하지 않는다.

(기본 생성자의 이름은 클래스 이름과 같아야 하고, 리턴값이 없고, 매개변수가 없다.)

 

이 때 Data_1은 생성자가 아예 없어서 실행시 컴파일러가 자동으로 기본생성자 Data_1() {} 를 생성해준다.

그러나 Data_2에는 매개변수가 있는 생성자가 존재하기 때문에 컴파일러는 자동으로 기본 생성자를 추가해주지 않는다.

아래와 같이 사용자가 직접 기본 생성자를 생성해 주어야 오류가 생기지 않는다.

 

 

 

다음과 같은 코드가 있을 때

class Car {
	String color;
	String gearType;
	int door;
	
	Car() {}
	Car(String c, String g, int d) {	//매개변수가 있는 생성자
		color = c;
		gearType = g;
		door = d;
	}

 

객체를 생성하는 방법에는 두가지가 있다.

1)
Car c = new Car();
c.color = "White";
c.gearType; = "auto"; 
c.door = 4;

2)
Car c = new Car("white", "auto", 4);


매개변수가 있으면 

1) 처럼 네 줄짜리로 작성할 코드를 

2) 처럼 간결하게 작성할 수 있다.

'자바' 카테고리의 다른 글

생성자 this(), 참조변수 this.  (0) 2022.07.15
생성자  (0) 2022.07.14
static 메소드 / 인스턴스 메소드  (0) 2022.07.13
메소드  (0) 2022.07.13
클래스와 변수  (0) 2022.07.12

+ Recent posts