class Cow
ad class Pig
이라는 2 개의 클래스가 있다고 가정 해 보겠습니다.구현을 깨지 않고 클래스에 메소드 추가
그들은 둘 다 interface Animal
을 구현합니다.
interface
의 경우 public void eat()
및 public void speak()
이라는 두 가지 방법 만 있습니다.
모두 괜찮습니다. 그러나 이것은 interface
을 사용하는 것이 좋지만,이 interface
에 메서드를 추가해야한다면 구현이 중단된다는 것을 알았습니다. 즉,이 클래스에서 새 메서드를 구현해야합니다.이 메서드는 " 닫히는 원리 ".
interface
외에도 나는 abstract
클래스를 사용할 것이므로 앞으로 새로운 메소드를 추가해야한다고 생각했습니다. 예 : public class Cow extends ... implements Animal
.
좋은 계획 인 것 같아요. 그렇지 않다면 수정하십시오.
하지만 문제는 무엇입니까? 이러한 클래스가 이미 다른 클래스 인 경우 ? 이 경우 2 개의 클래스를 확장 할 수 없습니다.
그래서 제 질문은 :
내가 관련 클래스에 공통의
interface
이 하지 않는 미래를 새로운 방법을 추가 할 수있는 기능을 보류하면서 선언 할 수있는 패턴이 있습니까 "닫힌 개방 원칙"을 깨고 구현을 중단하지 않습니까?
Java 8의 [* default methods *] (http://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html)가 해결하려고하는 문제입니다. –