나름 정리해봤는뎅 이거 너무많은데...?


이거 설명하라고하면 어떻게 설명함?


interface의 특징

1.인터페이스는 클래스가 아닌 인터페이스라는 고유한 형태를 가지고 있다.

2.인터페이스는 통일성 있는 설계를 가능하게 해주며 다형성의 대표적인 방법이다.

3.접근제어자는 public 또는 default만 올 수 있다.

→인터페이스는 다른 구현자들에게 로직을 받는다는 것을 가정하기 때문에, 그 로직의 패키지를 기준으로 접근 제어자를 생각해보면 public과 default가 오는 것은 당연하다.

4.상수 필드와 추상메소드로 구성되어있다.(일반 변수 선언 불가)

→JAVA 8부터는 default 메소드와 static 메소드 또한 인터페이스의 멤버로 추가되었다.

5.한번에 다중상속(implements)이 가능하다.

6.인터페이스는 인터페이스끼리 상속이 가능하다.

이때는 extends 키워드를 사용하고 클래스 상속과 동일한 형식을 갖는다.

7.구현할 클래스가 추상클래스나 다른 클래스를 상속하는 경우에는 선 상속 후 구현을 하여야 한다.

8.인터페이스는 생성자가 없으므로, 객체를 생성 할 수 없다.


추상클래스의 특징

1.클래스들의 공통되는 필드와 메소드를 정의한 클래스 를 말한다.

2.추상 클래스,추상 메소드에는 abstract 키워드를 추가한다.

3.추상클래스는 생성자를 만들 수 있으나, 상속을 위한 클래스이기 때문에 필드에 따로 객체를 생성할 수 없다. 따라서 상속을 통해 자식 클래스에서 인스턴스를 생성해야 한다.

4.추상 클래스는 추상 메소드, 일반 메소드, 필드(멤버변수), 생성자로 구성된다.

5.일반적인 상속의 특성과 동일하다.(extends 이용, 단일 상속, 생성자 호출 등)

6.추상 클래스를 상속받는 클래스는 추상 메소드를 반드시 오버라이딩해야 한다. 오버라이딩 할 때 abstract를 제외한 시그니처를 클래스에서 동일하게 적어줘야 한다.


※abstract 와 interface의 공통점

1.상속을 강제하기위한 규제

→즉 반드시 상속을 해서 사용해야한다.(상속을 강제한다)

2.추상메소드들은 오버라이딩을 반드시 해야한다.

3.추상메소드는 구체적인 로직을 담고있지않고, 시그니쳐만 가지고 있다.

4.abstract와 interface를 사용하는 사용자의 의도

추상 클래스,인터페이스 → 상호간의 공통적으로 약속한 부분을 기입

상속(implements,extends)받는 하위 클래스 → 상황에따라 달라지는 부분을 기입

5.객체를 못만든다.

→인터페이스는 생성자가 없으므로, 객체를 생성 할 수 없다.

→추상클래스는 생성자를 만들 수 있으나, 상속을 위한 클래스이기 때문에 필드에 따로 객체를 생성할 수 없다.