public class Car {
//Car 클래스에는 다음과 같은 3개의 메소드가 들어있다.
public void carOn() {
System.out.println("시동을 겁니다.");
}
public void drive() {//오버라이딩 될 메소드
System.out.println("일반 주행 중입니다.");
}
public void carOff() {
System.out.println("시동을 끕니다.");
}
}
public class SmartCar extends Car{
public static final int NORMAL = 1;
public static final int SMART = 2;
public int driveMode = NORMAL;//driveMode는 기본적으로 NORMAL임
@Override // 밑의 메소드가 오버라이딩된것이라는 것을 알려주는 어노테이션
public void drive() {
if(driveMode == NORMAL) {//driveMode가 NORMAL일 경우 부모 클래스인 Car 클래스의 drive 메소드를 사용.
super.drive();
}
else {
System.out.println("자동 주행 중입니다.");
}
}
}
public class Main {
public static void main(String[] args) {
SmartCar smartCar = new SmartCar(); //객체 생성
smartCar.carOn();
smartCar.drive();
smartCar.driveMode = SmartCar.SMART; //driveMode를 SMART로 바꿈
smartCar.drive();
smartCar.carOff();
}
}
시동을 겁니다.
일반 주행 중입니다.
자동 주행 중입니다.
시동을 끕니다.
Car 클래서에서 정의된 drive 메소드를 SmartCar에서 오버라이딩한다.
driveMode가 NORMAL이면 super 키워드를 통해 부모 클래스의 drive메소드를 실행하고
SMART이면 자동주행중입니다를 출력한다.
super를 통해서 부모 클래스의 메소드를 접근했다.
'자바' 카테고리의 다른 글
자바 업캐스팅이란? (0) | 2022.07.05 |
---|---|
자바 super 부모생성자 호출 (0) | 2022.07.05 |
자바 메소드 오버라이딩이란? (0) | 2022.07.04 |
자바 상속받을 때, 부모클래스의 private 억세스는 제한된다. (0) | 2022.07.04 |
자바 클래스 상속 (0) | 2022.07.04 |