추상 클래스와 인터페이스
추상클래스
미완성 설계도라고 할 수 있습니다.
왜냐하면 미완성 메서드(추상메서드)를 포함하고 있기 때문입니다.
추상클래스로 인스턴스를 생성할 수 없습니다.(미완성이기 때문)
추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있습니다.
클래스 선엄부에 abstract를 붙이면 추상클래스가 됩니다.
1
abstract class 클래스 이름 {}
인터페이스
구현된것 은 아무 것도 없고 밑그림만 그러져있는 ‘기본설게도‘라고 할 수 있습니다.
인터페이스는 추상클래스처럼 추상메서드를 갖지만
추상 클래스와 달리 오직 추상메서드와 상수만을 멤버로 가질 수 있습니다.
다른 클래스를 작성하는데 도움을 줄 목적으로 작성됩니다.
class대신 interface를 사용합니다.
접근제어자로 public만을 사용할 수 있습니다.
1
2
3
4
5
6
interface 인터페이스이름 {
public static final 타입 상수이름 = 값;
public abstract 메서드이름(매게변수목록); //추상메서드
}
차이점
1. 목적
추상 클래스는 클래스의 일반적인 특성과 함께 추상적인 특징도 가지며,
실체 클래스의 공통된 기능을 추출하여 구현할 목적으로 사용됩니다.
인터페이스는 메서드의 원형만 정의하고 구현 내용은 없는 추상적인 개념으로,
객체 간의 상호작용을 위한 규약을 정의하는 목적으로 사용됩니다.
2. 다중 상속
추상 클래스는 다른 클래스에서 상속받아 하위 클래스에서 확장하여 사용할 수 있습니다.
하지만 자바는 다중 상속을 지원하지 않기 때문에, 추상 클래스는 여러 개의 클래스를 상속할 수 없습니다.
인터페이스는 다른 인터페이스를 상속받아 여러 개의 인터페이스를 구현할 수 있습니다.
따라서 다중상속이 가능합니다.
3. 구현
추상 클래스는 일반적인 메서드와 멤버 변수를 포함하고 있기 때문에,
하위 클래스에서 반드시 구현해야 하는 추상 메서드 외에도
일반적인 메서드를 포함할 수 있습니다.
인터페이스는 메서드의 원형만을 정의하고 구현 내용은 없기 때문에,
모든 메서드는 하위 클래스에서 구현되어야 합니다.
4. 접근 제어
추상 클래스의 멤버 변수와 메서드는 접근 제어자를 사용하여 접근 범위를 지정할 수 있습니다.
인터페이스의 모든 멤버 변수와 메서드는 public으로 선언되어 있으며,
다른 접근 제어자를 사용할 수 없습니다.