반응형
package overriding;
public class Airplane {
public void land() {
System.out.println("착륙합니다");
}
public void fly() {
System.out.println("일반비행합니다.");
}
public void takeOff() {
System.out.println("이륙합니다.");
}
}
package overriding;
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 {
super.fly(); // 부모 메소드 불러옴 부모에서 정의된 필드도 가져올 수 있음[전역만]
}
}
}
package overriding;
public class SupersnoicAirPlaneExample {
public static void main(String[] args) {
SupersonicAirplane sa = new SupersonicAirplane();
sa.takeOff();
sa.fly(); // 자식객체를 sa로 만들었기 때문에 자식 메소드 override 실행
sa.flyMode = SupersonicAirplane.SUPERSONIC;
sa.fly();
sa.flyMode = SupersonicAirplane.NORMAL;
sa.fly();
sa.land();
}
}
부모 클래스에 이렇게 fly가 정의 되어있는데
public void fly() {
System.out.println("일반비행합니다.");
}
자식에 경우 이 fly를 쓰고 싶은데 내용을 다르게 쓰고 싶습니다. 그러한 경우에는 오버라이드를 하시면됩니다.
@Override라고 적고 내용을 자식이 사용하고 싶은데로 쓰시면 됩니다.
즉 재정의라고 불리는 Override는 정말 많은 곳에 쓰입니다.
@Override
public void fly() {
if(flyMode == SUPERSONIC) {
System.out.println("초음속비행합니다");
}else {
super.fly(); // 부모 메소드 불러옴 부모에서 정의된 필드도 가져올 수 있음[전역만]
}
}
https://github.com/SungJLee/My_Java_World.git
반응형
'[Java] > [Java]' 카테고리의 다른 글
[Java] 자바 인터페이스(Interface) 다중상속 (implements) (0) | 2021.07.03 |
---|---|
[Java] 자바 인터페이스(Interface) (default , 고정상수) (0) | 2021.07.02 |
[Java] 자바 Class(클래스) 상속(extends) (super() , super) (0) | 2021.07.02 |
[Java] 자바 Class(클래스) 상속(extends)[추상화] (0) | 2021.07.02 |
[Java] 자바 Class(클래스) 클래스 특징 (Setter Getter, 캡슐화, 은닉, public vs private) (0) | 2021.07.02 |