메소드 오버라이딩 만들기 2 (super 나옴)
class Person {
String phone;
public void setPhone(String phone) {
this.phone= phone;
}
public String getPhone() {
return phone;
}
}
class Professor extends Person {
public String getPhone() { // Person의 getPhone()을 오버라이딩함
return "Professor : " + super.getPhone(); // super.getPhone()은 Person의 getPhone()을 호출
}
}
public class Overriding {
public static void main (String [] args) {
Professor a = new Professor();
a.setPhone("011-123-1234");
System.out.println(a.getPhone());
Person p = a;
System.out.println(p.getPhone());
}
}
----------------------------------------------------------------------------------
출력시
professor : 011-123-1234
professor : 011-123-1234
이 된다.
!!!! 주 의 !!!
여기서 super라는 새로운 키워드가 나오는데 this, this(), super, super()를 헷갈리지 말자!
1) this 는 현재 객체의 주소(혹은 레퍼런스)를 갖는다. -----> this.객체내의멤버
2) super 는 현재 객체 내에 있는 슈퍼 클래스 영역의 주소를 갖는다. -----> super.객체내의슈퍼클래스의멤버
3) this() 는 생성자에서 동일한 클래스 내의 다른 생성자를 호출할떄 쓰임.
4) super()는 서브 클래스의 생성자에서 슈퍼 클래스의 생성자를 선택 호출할때 사용
예제 - 명품 java programming -