추상 메소드와 추상 클래스

추상 메소드

추상 메소드 : 선언부는 있는데 구현부가 없는 메소드

추상메소드를 하나라도 가지고 있다면 반드시 추상 클래스로 선언해야한다.

abstract void fly();

추상 클래스

추상 클래스는 인스턴스화 할 수 없다.

추상 클래스를 상속한 구현체는 추상메소드를 반드시 구현해야한다.

public abstract class Animal {}

Default Method

interface의 default 메소드를 사용하여 해결할 수 있다. 디폴트 메소드

다중 상속이 불가능한 자바에서는 인터페이스의 default를 사용하는게 더 유연하다.

정말 상속관계로 해결해야되는 문제가 아니라면 interface를 사용하자. 스프링 진영에서도 interface로 바뀐 코드를 볼 수 있다.

When to use: Java 8+ interface default method, vs. abstract method


생성자

기본 생성자

생성자를 정의하지 않는다면 자바에서는 기본생성자를 제공한다. 컴파일러가 생성해준다.

class Demo {
		public Demo() {} //이렇게 생성하지 않아도 컴파일러가 만들어준다!
}