반원 블로그

[JAVA 기초] super - 부모 메소드 호출 본문

2017/JAVA (기본)

[JAVA 기초] super - 부모 메소드 호출

반원_SemiCircle 2017. 3. 5. 19:57

■1
자식 클래스에서 부모 클래스의 메소드를 오버라이딩하게되면 부모 클래스의 메소드는 숨겨지고 오버리이딩 된 자식 메소드만 사용된다.



그런데 자식 클래스 내부에서 오버라이딩된 부모 메소드를 호출하고 싶을 땐 super 키워드를 사용한다. super는 부모 객체를 참조하고 있어서 부모 메소드에 직접 접근한다.



연습 코드 - ideone으로 실행결과 확인하기


/* package whatever; // don't place package name! */
 
import java.util.*;
import java.lang.*;
import java.io.*;
 
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
	public static void main (String[] args)
	{
		SonicAirplane sa = new SonicAirplane();
		sa.takeOff();
		sa.fly();
		sa.flyMode = SonicAirplane.SONIC;
		sa.fly();
		sa.flyMode = SonicAirplane.NORMAL;
		sa.fly();
		sa.land();
	}
}
 
//일반적인 비행기를 나타낸 클래스- 공통
class Airplane{
	public void land(){
		System.out.println("착륙합니다.");
	}
	public void fly(){
		System.out.println("일반모드로 비행합니다");
	}
	public void takeOff(){
		System.out.println("이륙합니다");
	}
}
 
//음속 비행기를 나타낸 클래스 - 상속
class SonicAirplane extends Airplane{
	public static final int NORMAL = 1;
	public static final int SONIC = 2;
 
	//비행 모드를 저장하는 변수
	public int flyMode = NORMAL;
 
	@Override
	public void fly(){
		if(flyMode==SONIC){
			System.out.println("음속모드로 비행합니다");
		}else{
			//부모인 Airplane 객체의 fly() 메소드 호출
			super.fly();
		}
	}
}
/////결과/////
이륙합니다
일반모드로 비행합니다
음속모드로 비행합니다
일반모드로 비행합니다
착륙합니다.


Comments