Animal
공통 속성 name과 이동 메서드 move()를 부모
클래스에 두어 하위 클래스의 중복 구현을 줄입니다.
extends는 부모의 상태와 메서드를 재사용하고,
implements는 클래스가 특정 인터페이스 계약을 만족하게
합니다.
공통 속성 name과 이동 메서드 move()를 부모
클래스에 두어 하위 클래스의 중복 구현을 줄입니다.
super()로 부모 초기화를 실행하고, 필요한 메서드는
오버라이딩합니다.
서로 다른 기능 계약을 동시에 만족해 다형적인 API에 전달될 수 있습니다.
공유 구현이 있으면 부모 클래스를 두고
extends를 사용합니다.
역할 보증만 필요하면 인터페이스와
implements를 사용합니다.
둘 다 필요: 하면 단일 상속 위에 여러 인터페이스를 조합합니다.