Post

추상 클래스와 인터페이스

추상클래스

미완성 설계도라고 할 수 있습니다.

왜냐하면 미완성 메서드(추상메서드)를 포함하고 있기 때문입니다.

추상클래스로 인스턴스를 생성할 수 없습니다.(미완성이기 때문)

추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있습니다.

클래스 선엄부에 abstract를 붙이면 추상클래스가 됩니다.

1
abstract class 클래스 이름 {}

인터페이스

구현된것 은 아무 것도 없고 밑그림만 그러져있는 ‘기본설게도라고 할 수 있습니다.

인터페이스는 추상클래스처럼 추상메서드를 갖지만

추상 클래스와 달리 오직 추상메서드와 상수만을 멤버로 가질 수 있습니다.

다른 클래스를 작성하는데 도움을 줄 목적으로 작성됩니다.

class대신 interface를 사용합니다.

접근제어자로 public만을 사용할 수 있습니다.

1
2
3
4
5
6
interface 인터페이스이름 {

    public static final 타입 상수이름 = ;

    public abstract 메서드이름(매게변수목록); //추상메서드
}

차이점

1. 목적

  • 추상 클래스는 클래스의 일반적인 특성과 함께 추상적인 특징도 가지며,

    실체 클래스의 공통된 기능을 추출하여 구현할 목적으로 사용됩니다.

  • 인터페이스는 메서드의 원형만 정의하고 구현 내용은 없는 추상적인 개념으로,

    객체 간의 상호작용을 위한 규약을 정의하는 목적으로 사용됩니다.

2. 다중 상속

  • 추상 클래스는 다른 클래스에서 상속받아 하위 클래스에서 확장하여 사용할 수 있습니다.

    하지만 자바는 다중 상속을 지원하지 않기 때문에, 추상 클래스는 여러 개의 클래스를 상속할 수 없습니다.

  • 인터페이스는 다른 인터페이스를 상속받아 여러 개의 인터페이스를 구현할 수 있습니다.

    따라서 다중상속이 가능합니다.

3. 구현

  • 추상 클래스는 일반적인 메서드와 멤버 변수를 포함하고 있기 때문에,

    하위 클래스에서 반드시 구현해야 하는 추상 메서드 외에도

    일반적인 메서드를 포함할 수 있습니다.

  • 인터페이스는 메서드의 원형만을 정의하고 구현 내용은 없기 때문에,

    모든 메서드는 하위 클래스에서 구현되어야 합니다.

4. 접근 제어

  • 추상 클래스의 멤버 변수와 메서드는 접근 제어자를 사용하여 접근 범위를 지정할 수 있습니다.

  • 인터페이스의 모든 멤버 변수와 메서드는 public으로 선언되어 있으며,

    다른 접근 제어자를 사용할 수 없습니다.

This post is licensed under CC BY 4.0 by the author.