오버로딩 조건 : 메서드 이름이 같아야 / 매개변수의 개수 또는 타입이 달라야 / 반환 타입은 관계 없음.
cf.
int add(int a, int b) {return a+b; }
int add(int x, int y) {return x+y; } //매개변수 이름만 다를 뿐 매개변수의 타입이 같음
-> 오버로딩 성립X
int add(int a, int b) { return a+b;}
long add(int a, int b) {return (long)(a+b); } // 리턴타입만 다른 경우. 매개변수 타입과 개수가 일치하기 때문에
-> 오버로딩 성립X
long add (int a, long b) {return a+b; }
long add (long a, int b) {return a+b; } // 서로 순서가 다른 경우 중복된 메서드가 아닌
-> 오버로딩으로 간주.
ex. println() - boolean, char, char[], double, float, int, long, Object, String
인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메서드'
인스턴스 생성시 수행할 작업(iv 초기화)에 사용
생성자의 이름은 클래스의 이름과 같아야 한다.
생성자는 리턴 값이 없다. (void 안붙임 항상 반환값이 없으니까)
1) 기본 생성자(default constructor)
매개변수가 없는 생성자
생성자가 하나도 없을 때만, 컴파일러가 자동 추가
2) 매개변수가 있는 생성자
ex.
Class Car {
String color;
String gearType;
int door;
Car() {} //기본 생성자
Car(String c, String g, int d) { //매개변수가 있는 생성자 -> 인스턴스를 생성하는 동시에 원하는 값으로 초기화 함.
color = c;
gearType = g;
door = d;
}
}
Car c - new Car("white", "auto", 4); //인스턴스 생성 후에 별도로 초기화하지 않아도 된다.
3) 생성자 this()
4) 참조변수 this
ex.
Car(String c, String g, int d) {
color = c;
gearType = g;
door = d;
} ==> color는 iv, c는 lv
Car(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
} // this.color는 인스턴스변수, color는 지역변수(생성자의 매개변수로 정의된)
** static메서드 에서는 iv사용 불가, this도 사용불가.