我很难选择一个班级应该具体还是抽象。另外,我并不完全知道层次结构中的什么点会使事情变得具体或抽象。问题是,我们如何确定一个类应该是抽象的还是具体的类?
答案 0 :(得分:2)
通常,当您完全没有理由创建该类的实例时,类应该是抽象的。例如,假设你有一个Shape类,它是Triangle,Square,Circle等的超类。因为" Shape"如此通用,不应该有任何理由构造一个Shape对象,所以它应该是抽象的(或者甚至是一个接口)。
答案 1 :(得分:1)
抽象类意味着抽象不完整。它需要另一个类来完成它和/或它的功能。你需要扩展抽象类。
选择抽象类时,要记住几件事:
答案 2 :(得分:1)
将Abstract类视为普通类,其中一些方法将在稍后定义。
例如,您想要访问数据库,但您不知道将使用哪个数据库。因此,您对打开连接的部分进行编码,启动事务,访问数据库,关闭事务并释放连接。但是,您未实现获取连接的部分,因为该部分是特定于数据库的。因此,例如,访问MySQL的人会扩展您的类,并且只需要实现获取连接的部分。
答案 3 :(得分:0)
当所有子类都有共同的行为时,应该有一个具体的方法。
例如 - 车辆是一个抽象类,然后它由燃料驱动。这将是所有车辆(自行车除外)的常见行为 - 因此应以具体方法描述,其他功能如类(2轮车/ 4轮车),运行细节(里程0-20 / 0-80),动力细节( 100cc-400cc)对于不同的车辆会有所不同,所以它应该抽象方法。
答案 4 :(得分:0)
在我看来,抽象类和具体类之间的唯一区别是抽象类不能“新建”。
您可以在具体类之前放置一个抽象关键字,以阻止其他人更新此类的对象。 (抽象类不必具有抽象方法)
我建议你使用接口而不是抽象类,因为Java是单继承,一个类只能有一个超类但可以实现多个接口。
答案 5 :(得分:0)
抽象类是不错的选择: