该类之前是否需要使用abstract关键字? 或者它是否需要未实现的(抽象)方法? 可以延长任何正常班级吗?
答案 0 :(得分:4)
可以延长任何正常班级吗?
是:)除非它有最终修饰符。
答案 1 :(得分:4)
是的,除非类本身被声明为final,否则所有非final的方法(静态也与其余方法略有不同)都可以被覆盖。仅当您未在基类中提供任何实现时,才使用抽象方法。
答案 2 :(得分:3)
不,它不需要有单词abstract,单词abstract不会允许你直接创建该类的实例,如果你使用单词abstract,你只能创建扩展该抽象的类的实例类。
AbstractClass abs = new ChildClass();
答案 3 :(得分:1)
是的,你可以扩展一个类,而不需要将它定义为抽象。这意味着你将重写方法。例如,您可以创建一个类
DifferentString extends String
然后,
public String toString()
{
return "Something different";
}
这意味着您可以更改父类的原始行为。
参考:
http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html
答案 4 :(得分:1)
正如其他人也说过的那样 - 但是如果你可以帮助它,最好避免这样做,因为你最终可以更容易地解决所谓的fragile base class问题。
答案 5 :(得分:1)
是的,但是如果该类被标记为final,则无法扩展。
class Foo {
//some code here
}
class Boo extends Foo {
}
答案 6 :(得分:0)
这里有一些概念混淆。未实现的方法驻留在接口中,您可以实现该接口。
只要不是最终类,你就可以扩展任何类。
编辑:我的意思是说,最好将未实现的方法放在接口中。对不起,措辞不好。抽象类也可以有未实现的方法,尽管最终会有一个复杂而严格的层次结构。 。