티스토리 뷰

자바

[Java] 추상 클래스와 인터페이스

김쓰로그 2022. 12. 29. 17:19

 

출처:java67

추상클래스??

추상 메서드를 하나라도 가지고 있는 클래스이고 클래스 선언부에 abstract 키워드를 명시해야 한다. 이러한 클래스를 추상 클래스라고 한다. 그리고 추상 클래스는 단독으로 인스턴스를 생성할 수 없다. 만약 인스턴스를 생성하고자 한다면 상속을 통해 자식 클래스에서 완성을 한 후 생성해야한다.

public abstract class Employee {
	....
    public abstract void 메서드(); //추상메서드
}

extends 키워드를 통해 자식 클래스에게 상속한다.

자바에서 추상클래스는 대게 공통된 속성을 추상 클래스에 묶음으로서 코드를 재사용할 수 있게 해준다. 


인터페이스??

인터페이스는 다른 클래스를 작성하는데 도움을 주는 목적으로 작성하고 추상클래스와 다르게 implements 키워드로 다중상속이 가능하다. 단독으로 인스턴스를 생성하지 못한다.

public interface Car {
	public static final 변수;
	public abstract void 메서드이름();
}

자바8부터는 인터페이스 또한 default, static 메서드를 선언할 수 있게 되어서 추상 메서드 이외에 본문을 갖는 메서드가 인터페이스에 존재할 수 있게 되었다. 또한 자바9부터는 private 메서드도 선언할 수 있는데 이는 인터페이스 내에 default 메서드 내에 사용할 목적으로 본문을 구현하는데 사용한다.

public interface Runnable {
    void running();
    
    default void walking() {
        System.out.println("walking");
    }
}

위 코드를 보면 default 키워드를 통해 인터페이스에서 본문을 구현했다. 이는 상속을 받은 클래스에서 오버라이딩을 강제하지 않는다. 아래의 코드를 작성해보면 default 메서드인 walking에 대해 강제하지 않는다.

public class KoreaMan implements Runnable {
    @Override
    public void running() {
        System.out.println("running");
    }
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함