JAVA/개념정리

추상 클래스와 인터페이스

inderrom 2022. 10. 9. 23:39

추상메서드 

 

abstract

선언부만 있고 구현부는 없는 메서드

메서드의 이름만 정의해놓고 형태가 없음 { } 블럭이 없음

 

추상클래스를 상속받으면 추상클래스 안에 있는 추상 메서드를
반드시 재정의 해야한다. (override)

 

1. 생성자를 정의할 수 있다

2. 단독으로 인스턴스 생성할 수 없다

3. abstract 선언을 해야한다

4. private 지시자를 선언할 수 없다

5. 확장하는 클래스는 abstract 매서드를 반드시 override 해야한다!

 

인터페이스

interface 

인터페이스는 추상 클래스 메서드를 제공한다

인터페이스 내에 선언하는 변수는 모두  public static final 이고

그래서 생략 가능하다.

 

public class Retriever implements Dog {

    public Retriever(String name) {
        super(name);
    }

    // 반드시 추상 메서드는 Override 해야 한다.
    public void bite() {
        …
    }

    // 반드시 추상 메서드는 Override 해야 한다.
    public void bark() {
        …
    }

}

public interface Dog {

    // 인터페이스는 생성자를 선언 및 정의를 할 수 없다.
    public Dog(String name) { 
        this.name = name;
    }
}

인터페이스는 생성자를 선언 및 정의할 수 없다!!

 

1. 생성자 선언 및 정의 할 수 없다

2. 인터페이스 내에서 선언하는 변수는 모두 public static final 선언이 된 변수이다

3. default 메서드도 아니고 static 메서드도 아닌 메서드는 모두 public abstract가 선언된 메서드다

4. default 메서드나 static 메서드는 모두 public 이 선언된 메서드다

5. 상속받는 클래스는 abstract 메서드를 반드시 override 해야 하며 구현체가 반드시 존재해야한다

6. 인터페이스의 내용을 실제로 구현하는 클래스는 인터페이스를 implements해야한다.