1
2
不能实例化抽象类。更明智的方法是为
然后在代码中:
|
2
2
在Java中,抽象类允许有一个或多个指定但未实现的方法。它们是用来作为共享大多数功能的子类(除了少数方法)的“最高公分母”。因此,Java禁止您创建抽象类的实例,并且需要任何子类来提供抽象方法的实现。这是故意的。它背后的基本思想是促进代码的可重用性,但在现实生活中,这是一种权衡组合,因此您的里程可能会有所不同。大多数情况下,您可以通过非抽象基类和接口的组合实现类似的效果。 根据您的示例,Char不一定非得是抽象类,但武器是一个很好的候选者,因为它有一个“usebreal”方法。您可以在武器中声明“Use武器”为抽象,并在剑和棍棒中提供不同的实现。或者,你可以把武器变成一个界面。你想在这里做的抽象是,角色可以使用武器,而不知道实际的武器是棍棒还是剑。这意味着你可以随时给Char一个任何类型的武器,一切都应该正常。与在构造函数中传递字符和“int”不同,实际上最好将其传递给武器本身。 |