이번 포스팅에서는 추상메서드, 인터페이스의 설명과 차이점에 대해 알아보겠습니다.
1. 추상클래스
추상클래스는 미완성된 클래스로 상속을 통해 자손클래스에 의해 완성됩니다.(하지만 추상메서드가 없는 추상클래스여도 추상클래스는 유효합니다.)
필드, 생성자를 포함할 수 있으며, 반드시 상속을 통해서 구현하여야합니다.
클래스를 생성할 때 abstract를 붙여야하며 추상메서드 역시 abstract를 앞에 붙여줘야합니다.
2. 인터페이스
인터페이스는 클래스와 다르며, 상수와 추상메서드만을 허용합니다.
인터페이스를 생성할 때 앞에 interface를 붙여야합니다.
상수와 메서드를 만들 때 앞에 제어자(public static final, public abstract)를 붙여도 되고, 만약 안붙이더라도 컴파일러가 자동으로 생성해줍니다.
인터페이스끼리의 상속은 인터페이스로부터만 상속을 받을 수 있으며 다중상속이 가능합니다.
(살짝 어색한 감이 있습니다)
상속받은 클래스는 반드시 그 인터페이스의 추상메소드를 구현해야합니다.
한 클래스에서 여러개의 인터페이스를 상속할 수 있으며, 다중상속이 가능합니다.
3. 추상클래스와 인터페이스의 공통점
추상메서드를 구현해야 하는 공통적인 특징이 있습니다.
각 클래스마다의 공통적인 특징을 추상클래스와 인터페이스를 통해 표준화 할 수 있으며, 코드의 간결함과 유지 및 보수에 용이합니다.
추상클래스와 인터페이스로 객체생성을 할 수 없고, 반드시 extends나 implements를 통해서 객체생성이 가능합니다.
4. 추상클래스와 인터페이스의 차이점
추상클래스를 상속받은 클래스는 반드시 추상클래스에 있는 모든 추상메소드를 구현해야 할 필요는 없지만, 인터페이스는 반드시 그 안에 있는 모든 추상메소드를 구현해야합니다.(인터페이스의 강제성이 더 높습니다.)
추상클래스는 extends를 통해 상속이 가능하며, 인터페이스는 implements를 통해 상속이 가능한데, 추상클래스는 한번만 상속이 가능하지만, 인터페이스는 다중상속이 가능합니다.
추상클래스는 관계가 있는 클래스끼리의 상속이 가능하지만, 인터페이스는 다형성을 통해 관계없는 클래스들끼리의 관계를 맺어줄 수 있습니다.
출처 : 자바의 정석
'코딩 > Java' 카테고리의 다른 글
Java 초기화블럭 (0) | 2020.06.23 |
---|---|
Java 매개변수와 인자 (0) | 2020.06.23 |
Java 오버로딩과 오버라이딩 (0) | 2020.06.21 |
메인메소드 public static void main(String args[])의 의미 (0) | 2020.06.19 |
Java 객체지향 프로그래밍에서 꼭 기억해야 하는 부분 (1) | 2020.06.18 |
최근댓글