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