본문 바로가기

Develop/Java

Java 추상클래스, 인터페이스 메서드 직접 구현하기

728x90
public abstract class Human { // 부모 추상 클래스
    String name;
    String job;

    abstract public void showRole();

    public void updateInfo(String name, String job) {
        System.out.println("추상 메서드에서 메서드 직접 구현");
    }
}
public class Developer extends Human { // 추상 클래스를 구현한 자식 클래스
    @Override
    public void showRole() {
        System.out.println("개발자 입니다.");
    }
}

추상 클래스에 메서드를 직접 구현하기 위해선 일반적인 메서드 선언 형식과 동일하게 선언하면 됩니다.

하지만 인터페이스에 메서드를 직접 구현하기 위해선 반환 타입 앞에 default 를 사용해야 합니다.

public interface Vehicle {
    void take();
    void move();

    default void refuel() {
        System.out.println("Need to refuel gasoline");
    }
}

이 표기된 default 앞에는 접근 제어자를 붙일 수 있으며 public은 생략이 가능합니다.

예시) public default void refule() 

 

디폴트 메서드와 기존 메서드 이름이 중복되면 충돌이 발생하고

여러 인터페이스와 디폴트 메서드 충돌의 경우는 인터페이스를 구현한 클래스에서 오버라이딩 해야하며

상위 클래스와 디폴트 메서드 충돌할 경우 상위 클래스의 메서드가 상속됩니다.

'Develop > Java' 카테고리의 다른 글

SOLID 원칙  (0) 2022.11.11
Java Exception  (1) 2022.09.22
Java 접근 제어자와 기타 제어자  (1) 2022.09.21
Java 배열 사이에 콤마를 포함한 문자열로 변경하기  (0) 2022.09.20
Java Overriding 주의점  (0) 2022.09.20