this와 super
매개변수가 멤버변수를 가린다
this
- this는 자기 자신 객체를 지정할 때 사용하는 키워드입니다.
- this. 을 사용하면 동일 클래스 내의 멤버(멤버변수, 메서드)를 참조할 수 있습니다.
- this()를 사용하면 생성자 내부에서 자신의 다른 생성자를 호출할 수 있습니다.
public class Person {
String name;
int age;
Person(String name, int age) {
name = name;
age = age;
}
}
같은 이름의 매개변수가
멤버변수의 사용을가린다
이 때
나 자신의 멤버로 지칭하는 키워드가 this이다
this 예제
super
- super는 한단계 위 부모클래스의 객체를 지정할 때 사용하는 키워드입니다.
- super. 을 사용하면 부모클래스의 멤버를 참조할 수 있습니다.
- super()는 생성자 내부에서만 사용이 가능하며, 부모클래스의 생성자를 호출하는
데 사용합니다.
- 생성자의 첫 라인에는 반드시 this(), super()가 있어야 하는데 이를 기술하지 않으면 묵시적으로
super()가 삽입되어 부모클래스의 기본 생성자를 자동으로 호출합니다.
- 생성자 내부에서 또다른 생성자를 호출할 때는(this(), super()) 반드시 생성자 블록 내부의 첫 라인
에 기술해야 합니다
실제 자바는 상속 계층 구조이다!
-자바의 모든 클래스는 Object 클래스를 상속받고 있습니다. Object클래스는 자바의 최상위 클래스입니다.
this와 super 예제
super예제
- super 키워드는 자식 클래스의 오버라이딩 된 메서드에서 부모의 메서드가 필요할 때 사용 할 수도 있습니다
public class Airplane {
void takeOff() {
System.out.println("비행기가 이륙합니다.");
}
void fly() {
System.out.println("일반 모드로 비행합니다.");
}
void land() {
System.out.println("비행기가 착륙합니다.");
}
}
public class SuperSonicAp extends Airplane {
int flyMode = 1;
void fly() {
if(flyMode == 1) {
System.out.println("초음속 모드로 비행합니다.");
}else {
super.fly();
}
}
}