강의로 돌아가기
걸음마

오버라이드 부문을 잘 모르겠습니다.

해당 실습을 이클립스에서 실행해보았는데 오버라이드를 자동적으로 추가하였을 때 아래와 같이 소스가나왔습니다.

@Override
public void afterMidnight() {
Meter.super.afterMidnight();
}

여기서 Meter.super.afterMidnight(); 의 의미가 인터페이스 Meter의 afterMidnight() 메소드를 그대로 사용한다는 의미인가요...?

작성중인 코드―TaxiExam.java
1
2
3
4
5
6
7
8
9
public class TaxiExam{
    public static void main(String[] args){
        Taxi taxi = new Taxi();

        taxi.start();
        taxi.afterMidnight();
        taxi.stop(10);
    } 
}
작성중인 코드―Meter.java
1
2
3
4
5
6
7
8
public interface Meter{
    public void start();
    public int stop(int distance);

    public default void afterMidnight(){
        System.out.println("자정이 넘었습니다. 할증이 필요한경우 이 메소드를 오버라이드 하세요.");
    }
}
작성중인 코드―Taxi.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Taxi implements Meter{
    public void start(){
        System.out.println("택시가 출발합니다.");
    }

    public int stop(int distance){
        int fare = distance * 2;
        System.out.println("택시가 도착했습니다. 요금은 "+fare+"입니다.");
        return fare;
    }

    @Override
    public void afterMidnight() {
        Meter.super.afterMidnight();
    }  
}
1 개의 답변
Demi

네 맞습니다.
Meter.super.afterMidnight(); 의 의미는 인터페이스 Meter의 afterMidnight() 메소드를 그대로 사용한다는 의미입니다.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.