본문 바로가기
JAVA

221011 super 실습

부모클래스

package quiz09;

public class Airplane { 
	//부모클래스는 변경하지 않습니다.
	String name;

	Airplane(String name) {
		this.name = name;
	}

	void takeOff() {
		System.out.println("비행기가 이륙합니다.");
	}
	
	void fly() {
		System.out.println("일반 모드로 비행합니다.");
	}
	
	void land() {
		System.out.println("비행기가 착륙합니다.");
	}
}

 

자식클래스

package quiz09;

public class SuperSonicAp extends Airplane{

	/*
	 * 1. Airplane을 상속받습니다. 생성자는 이름을 받아서 초기화 하도록 생성하세요
	 * 2. flyMode int형 변수를 선언하세요
	 * 3. fly() 메서드를 오버라딩합니다
	 * 	  fly() 메서드 안에서는 flyMode가 1이라면 "고속 모드로 비행합니다" 출력
	 *          flyMode 0이라면, super를 통해 부모님의 메서드를 호출
	 * 4. info() 메서드는 이름을 비행기의 이름, 속도를 리턴하도록 생성하세요.
	 */

	int flyMode;
	
	SuperSonicAp(String name){
		super(name);
	}
	
	
	void fly() {
		if(flyMode==1) {
			System.out.println("고속 모드로 비행합니다");
		}else if(flyMode==0) {
			super.fly();
		}
	}
	
	String info() {
		return "이름:"+name+", 모드:"+flyMode; 
	}
}

super()를 통해 부모 생성자를 가져오고,

super.을 통해 부모클래스의 메서드를 가져온다.

 

main

package quiz09;

public class AirplaneMain {
	public static void main(String[] args) {
		
		SuperSonicAp so = new SuperSonicAp("소닉");
		so.takeOff();//상속
		so.fly();
		so.flyMode=1;
		so.fly();//오버라이딩
		so.land();//상속
		
		System.out.println(so.info());
	}
}
비행기가 이륙합니다.
일반 모드로 비행합니다.
고속 모드로 비행합니다
비행기가 착륙합니다.
이름:소닉, 모드:1

이때, flyMode에 값을 주지 않을 경우 초기값인 0이기 때문에 값을 주기 전 info()를 출력하면 모드:0이 출력된다.

'JAVA' 카테고리의 다른 글

221011 은닉-getter와 setter  (0) 2022.10.11
221011 접근제한자  (0) 2022.10.11
221011 super  (0) 2022.10.11
221007 this  (0) 2022.10.07
221007 오버로딩 실습 Arrays.toString같은 메서드 만들기  (0) 2022.10.07