我有一个课程如下
public class Book extends Item{ ...}
public class DVD extends Item{ ...}
书籍可以是REFRENCE或ISSUE类型。 DVD只能是ISSUE类型。
我应该如下创建Item?
public class Item {
public enum ItemType{REFRENCE,ISSUE};
ItemType itemtype;
}
或者我应该为书和DVD宣布单独的枚举?
答案 0 :(得分:4)
如何定义两个接口Reference
和Issue
以及Book
同时实现这两个接口DVD
只实现Issue
?
答案 1 :(得分:2)
这取决于。 DVD问题是否与书籍问题相同?
如果是这样,那么将它放在父类中并在创建REFERENCE DVD时抛出异常。
如果不是,则在两个子类中定义单独的公共枚举。
答案 2 :(得分:1)
通过在枚举中存储某些类型,您将使用该语言的面向对象功能进行反对。 此外,我不认为“项目”“具有”作为问题/参考的属性。它更像是一种“是一种”关系,它建议你应该使用继承/接口。 当然,正确的方法取决于您的计划的目的。有时面向对象的构造可能妨碍你。