Java에서 다중 분류를 구현하는 방법이 있습니까? 예를 들어,이 UML 다이어그램을 살펴보십시오. Java에서 다중 분류 구현
GrainCrop
클래스는 어떻게 구현되어야합니까?
Java에서 다중 분류를 구현하는 방법이 있습니까? 예를 들어,이 UML 다이어그램을 살펴보십시오. Java에서 다중 분류 구현
GrainCrop
클래스는 어떻게 구현되어야합니까?
Java는 클래스에서 다중 상속을 지원하지 않으므로 인터페이스 만 여러 인터페이스를 상속 할 수 있습니다. 그래서 내가 뭘 할 것인가는 해당 클래스 GrainCrop
이 다른 두 클래스의 인터페이스를 구현한다는 것입니다. 그런 다음 GrainCrop
은 두 개의 다른 클래스를 집계하고 "내부"객체에 위임합니다. 추가 물건을해야 할 경우 GrainCrop
에있는 전화를 장식 할 수도 있습니다. 예 :
public void methodFromClassCrop() {
System.out.println("Stuff before call");
oneOfTheObjects.methodFromClassCrop();
System.out.println("Stuff after call");
}
물론 클래스 중 하나에 대해서만 인터페이스를 소개하고 다른 인터페이스를 상속 할 수 있습니다. 새로운 클래스가 다른 클래스의 하나를 확장하여 새로운 행동, 알고리즘, 다른 데이터를 사용하는 데이터를 소개하는지, 아니면 단지 "행동하다"(이 경우 집계)면 문제에 달려 있습니다.
인터페이스. Crop
및 FoodItem
중 하나 또는 모두는 GrainCrop
에 의해 구현되는 인터페이스입니다. 그래서 다음 중 하나를
GrainCrop
는Crop
을 (그리고 그 행동 상속) 및 전시 행동 FoodItem
의을. 이 경우 Crop
은 기본 클래스 (추상화 될 수 있음)이고 FoodItem
은 인터페이스입니다.GrainCrop
는FoodItem
이다 (그 행동 상속) 및 나타낸다 동작의 Crop
한다. 이 경우 FoodItem
은 기본 클래스 (추상화 될 수 있음)이고 Crop
은 인터페이스입니다.GrainCrop
은 모두 FoodItem
및 Crop
의 동작을 나타냅니다. 이 경우 FoodItem
및 Crop
모두 인터페이스입니다.단일 상속 환경에서 "무엇"인지와 어떤 동작을 나타내는 지 식별하는 데 특히주의해야합니다. (이는 FoodItem
과 같은 구조가 아닌 Eatable
과 같은 인터페이스로 종종 인터페이스를 설명하는 이유 중 하나이기 때문에 모델링이 더 명확 해집니다.)
자주 지나치게 단순화 된 것처럼 생각하면 기본 클래스의 "무언가"와 인터페이스는 "무언가"와 같은 것입니다. 객체는 일 수 있으며 일 수 있지만 할 수 있습니다 많은 것들.
글쎄, FeedItem에 구현이없는 것 같아서, 인터페이스로 만들고, (아마도 추상적 인) 자르기 클래스를 만들고, 둘 다 GrainCrop을 확장 해 보겠습니다. 하나의 클래스 만 확장 할 수 있지만 원하는만큼 인터페이스를 확장 할 수 있습니다. 이 예에서
봐 : http://stackoverflow.com/questions/21824402/java-multiple-inheritance – conFusl
예 실제로 이전에 질문이되었습니다. 그것을 지적 주셔서 감사합니다. – nsane