반응형
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

 

SungJLee/My_Java_World

Contribute to SungJLee/My_Java_World development by creating an account on GitHub.

github.com

 

 

반응형