可以在Java中扩展(继承)非抽象类吗?

时间:2012-03-06 13:55:40

标签: java inheritance

该类之前是否需要使用abstract关键字? 或者它是否需要未实现的(抽象)方法? 可以延长任何正常班级吗?

7 个答案:

答案 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)

这里有一些概念混淆。未实现的方法驻留在接口中,您可以实现该接口。

只要不是最终类,你就可以扩展任何类。

编辑:我的意思是说,最好将未实现的方法放在接口中。对不起,措辞不好。抽象类也可以有未实现的方法,尽管最终会有一个复杂而严格的层次结构。  。