본문 바로가기
국비지원/JAVA

[JAVA] 14-1. super keyword

by cosmog 2022. 10. 11.
반응형
super 
  • 한단계 위 부모클래스 안의 것들을 지칭한다.
  • 생성자의 첫라인에는 반드시 this(), super()가 있어야 한다.
  • -> 적지 않으면 암묵적으로 super()가 삽입되어 부모클래스의 기본 생성자를 자동으로 호출.

 

  • 최고 부모 class -> Object class (자바의 최상위 클래스)
  • 즉, 아무것도 extends하지 않아도 object 상속이다.

🔆main클래스

package day14.super_Q;

public class Main{
	
	public static void main(String[] args) {
		
		SuperSonicAp n = new SuperSonicAp("ss1011", 0);
		
		n.fly();
		System.out.println(n.info());
		
		SuperSonicAp s = new SuperSonicAp("ss1011-2", 1);
		
		s.fly();
		System.out.println(s.info());
	}
}

🔆부모 클래스 Airplane

package day14.super_Q;

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("비행기가 착륙합니다.");
	}
}

🔆자식 클래스 SuperSonicAp

package day14.super_Q;

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, int flyMode){
		super(name);
		this.flyMode = flyMode;
	}

	void fly() {
		takeOff();
		
		if(flyMode == 1) {
			System.out.println("고속 모드로 비행합니다.");
		}else {
			super.fly();
		}
		
		land();
	}

	String info() {
		return name + "은 " + (flyMode == 1 ? "고속" : "일반") + " 비행 모드 입니다.";
	}

}
반응형

'국비지원 > JAVA' 카테고리의 다른 글

[JAVA] 15. 다형성  (0) 2022.10.12
[JAVA] 14-2. 접근제어자 & 객체와 배열  (0) 2022.10.11
[JAVA] 13-3. this keyword  (0) 2022.10.07
[JAVA] 13-2. method 중복 (Overloading)  (0) 2022.10.07
[JAVA] 13-1. method 재정의 (Overriding)  (0) 2022.10.07