자바

JAVA 자바 메서드 재정의 - 부모 메서드 호출(super)

알통몬_ 2017. 3. 12. 19:36
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

자식 클래스 내부에서 오버라이딩된 부모 클래스의 메서드를 

호출해야 하는 경우가 생긴다면 super 키워드를 붙여서 부모 메서드를 호출할 수 있습니다. 

super는 부모 객체를 참조하고 있기 때문에 부모 메서드에 직접 접근 가능합니다.



예제)

부모 클래스

public class Airplane {

public void land() {

System.out.println("착륙합니다.");

}

public void fly() {

System.out.println("일반비행합니다.");

}

public void takeOff() {

System.out.println("이륙합니다.");

}

}

 


자식 클래스

public class SupersonicAirplane extends Airplane {

public static final int NORMAL = 1;

public static final int SUPERSONIC = 2;

public int flyMode = NORMAL;

@Override

public void fly() {

if(flyMode == SUPERSONIC) {

System.out.println("초음속비행합니다.");

} else {

//Airplane 객체의 fly() 메소드 호출

super.fly();

}

}

}

 


사용 예제

public class SupersonicAirplaneExample {

public static void main(String[] args) {

SupersonicAirplane sa = new SupersonicAirplane();

sa.takeOff();

sa.fly();

sa.flyMode = SupersonicAirplane.SUPERSONIC;

sa.fly();

sa.flyMode = SupersonicAirplane.NORMAL; //flyMode 값이 1이 되어 부모 클래스의 fly()메서드를 호출

sa.fly(); // 일반 비행합니다 출력

sa.land();

}

}

반응형