很少有子类扩展我的抽象Parent类。子类几乎没有相同的属性,例如日期。所以我的问题是我应该在我的抽象类或每个子类中声明这些属性(日期)的setter和getter吗? 在一个子类中,它是“发布日期”在其他“日期”中,那么我应该将它“全部”转换为日期吗?
答案 0 :(得分:2)
取决于
许多人建议使用组合物(即:具有a)而不是继承(即:是a)。而且大多数时候,这取决于你想要达到的目标。这两种方法都有利有弊。
如果要将这些属性放到基类中,那么所有类都具有这些属性,但您说并非所有类都具有该属性。作为一个好的设计,如果你没有完全填充一个对象,也就是说,你将某些字段留空或为空,目的是不好的。您的对象应该完全填充。
所以你可以做的是,你可以将wrap属性设置为行为(另一个对象),并将它们委托给想要使用它们的类。
使用你的直觉,无论哪种感觉正确并简化你的生活。
答案 1 :(得分:1)
如果您说所有子类都使用相同的字段用于相同的目的,那么一定要将它添加到父类并保存一些重复。如果你说子类都使用'date'字段用于不同的目的(你提到它们被称为不同的名称)那么你应该在子类本身声明它而不是使用超类字段超过1目的(否则从长远来看这将非常混乱)。