추상 메소드 : 선언부는 있는데 구현부가 없는 메소드
추상메소드를 하나라도 가지고 있다면 반드시 추상 클래스로 선언해야한다.
abstract void fly();
추상 클래스는 인스턴스화 할 수 없다.
추상 클래스를 상속한 구현체는 추상메소드를 반드시 구현해야한다.
public abstract class Animal {}
interface의 default 메소드를 사용하여 해결할 수 있다. 디폴트 메소드
다중 상속이 불가능한 자바에서는 인터페이스의 default를 사용하는게 더 유연하다.
정말 상속관계로 해결해야되는 문제가 아니라면 interface를 사용하자. 스프링 진영에서도 interface로 바뀐 코드를 볼 수 있다.
When to use: Java 8+ interface default method, vs. abstract method
생성자를 정의하지 않는다면 자바에서는 기본생성자를 제공한다. 컴파일러가 생성해준다.
class Demo {
public Demo() {} //이렇게 생성하지 않아도 컴파일러가 만들어준다!
}