다형성은 객체 간의 결합도를 낮추어 코드 변경 시 영향을 줄일 수 있고, 확장 가능한 코드를 작성하게 해줍니다. 부모 타입의 객체로 자식 타입을 참조할 수 있어 다양한 객체를 유연하게 처리할 수 있습니다.
상속은 부모 클래스의 속성과 메서드를 자식클래스가 물려받는 기능입니다.
상속을 통해 코드의 재사용성을 높일 수 있습니다
자바는 단일상속만을 지원하며 상속을 통해 다형성을 구현할 수 있습니다.
상속은 강력한 재사용성을 제공하지만, 부모 클래스의 변경에 자식 클래스가 쉽게 영향을 받으므로 캡슐화를 약화시킬 수 있습니다.
조합은 상속보다 코드가 더 유연하고, 포함 관계를 통해 상속의 단점인 부모 클래스의 변경에 덜 영향을 받습니다. 조합은 필요한 기능을 재사용하면서 클래스 간 결합도를 낮추는 데 유리합니다.
instanceof는 객체가 특정 클래스의 타입인지 여부를 확인할 때 사용합니다. 예를 들어, if (object instanceof MyClass)와 같이 사용하여 객체의 타입을 검사할 수 있습니다.instanceof는 객체의 타입에 의존하기 때문에 하위클래스를 직접 다형성을 저해하고 코드의 유연성을 떨어뜨릴 수 있습니다.instanceof를 남용하면 조건문이 늘어나고 코드가 복잡해질 수 있습니다. 다형성을 활용해 타입에 따른 처리를 우회하는 것이 더 바람직합니다.default 메서드로 일부 구현이 가능합니다.final로 선언하면, 해당 메서드를 하위 클래스에서 오버라이딩할 수 없습니다.final로 선언하면 상속이 불가능하게 하여, 클래스 자체의 구현을 확정합니다.