设计课程的问题

时间:2010-08-13 13:54:12

标签: java enums

我有一个课程如下

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宣布单独的枚举?

3 个答案:

答案 0 :(得分:4)

如何定义两个接口ReferenceIssue以及Book同时实现这两个接口DVD只实现Issue

答案 1 :(得分:2)

这取决于。 DVD问题是否与书籍问题相​​同?

如果是这样,那么将它放在父类中并在创建REFERENCE DVD时抛出异常。

如果不是,则在两个子类中定义单独的公共枚举。

答案 2 :(得分:1)

通过在枚举中存储某些类型,您将使用该语言的面向对象功能进行反对。 此外,我不认为“项目”“具有”作为问题/参考的属性。它更像是一种“是一种”关系,它建议你应该使用继承/接口。 当然,正确的方法取决于您的计划的目的。有时面向对象的构造可能妨碍你。