延伸无关

时间:2015-08-14 17:23:28

标签: java

我有2个课程,只需将其称为CustomerStuffCustomer具有属性(ID,姓名,地址以及getter和setter)和Stuff类具有( Id,Name,Stock以及getter和setter)。基于这些类属性,CustomerStuff类具有2个类似的属性和方法(Id,name,getId(),getName()和setId(参数),setName(参数))。所以我创建了一个抽象类作为基类,包含(Id,Name,getter和setter),只需将其称为myBaseClass,所以我只需要将myBaseClass扩展到我的CustomerStuff类而不是在每个类中写(Id,Name,getter和setter)属性。

我在想我的创建没有问题,直到我的朋友告诉我我的班级不应该使用继承,只需在每个Customer和Stuff类上写attribute and method(Id,Name)因为,Customer和Stuff类没有像动物和老虎这样的关系,因为老虎是一种动物。

我是否仍然在每个Customer和Stuff Class中使用继承或只为(Id, name,getter and setter)键入更多内容?

3 个答案:

答案 0 :(得分:2)

没有"对"回答这个问题。

继承可能很脆弱,在OO世界中,你应该支持Composition over Inheritance。我同意你的朋友,这两个类是独立的,不应该共享继承层次结构。

但是,如果您在某个时候以类似的方式对待它们,则可以在需要时实现可重用的接口。

然而,在这种情况下 - 除非有业务需要,否则我不会将这些课程结合在一起。

答案 1 :(得分:0)

你的朋友是对的,这两个类之间没有关联,所以创建一个他们都延伸的抽象类不应该完成。但我并不同意你应该创建一个单独的属性类,因为属性类不会有任何特殊的方法,只会有返回和设置值的方法。据我所知,这两个类的属性之间没有关联,所以我相信这只会过度,你应该保留它。

答案 2 :(得分:0)

  1. 如果在命名的类中有实际需要,例如Person(id,name),那么你可以使用它。
  2. 如果你没有这种情况,那么这些类彼此之间没有任何关系,应该分开。我认为大多数IDE都支持按指定字段生成代码。更强大的例子是Street(id,name),Person(id,name)。