추상 클래스 = 추상적인 것(new 할 수 없다) 의자 침대 = new가능 가구 = new 불가능 자 다음과같이 오버 라이딩을 했을 때 d1.speak();를 호출을 하면 d1은 Animal타입이지만 동적 바인딩을 통해서 부모 메서드를 무효화하고 자식 메서드의 speak()가 호출이 된다. 그렇다면 Animal은 내용은 없이 껍대기만 있으면 되는데 일반적인 클래스로 하면 new로 메모리에 띄울 수 있기 때문에 실수할 확률이 높아진다. 그럴 때 abstract를 붙여서 추상 클래스를 만들어주는 것이다. 다음과 같이 추상 클래스로 만들어주면 추상적인 것이기 때문에 java세상에서 new로 탄생시킬 수 없다. 그럼 Bird클래스를 추가시켜서 Animal을 다시 상속받아본다고 하면 오류가 난다. 왜 오류가 날까..