부모클래스
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 |