在Java 8的上下文中,为什么要实现Runnable Interface而不是扩展Thread类?

时间:2014-04-18 10:11:51

标签: inheritance multiple-inheritance runnable java-8

我已经知道我们更喜欢在扩展线程上实现Runnable接口,因为它为我们的类提供了灵活性,我们可以在将来扩展其他类。当我们扩展Thread类时,这是不可能的,因为Java不支持多重继承(在Java 8之前)。现在,当Java 8发布时,我们可以使用多重继承,因此这两种方法都很灵活。 我的问题是在Java 8的上下文中实现Runnable接口而不是扩展Thread类有什么优缺点?非常感谢提前:)。

1 个答案:

答案 0 :(得分:4)

您也无法在Java 8中扩展多个类。 In java document,显然写得

  

Java编程语言不允许您使用的一个原因   扩展多个类是为了避免多重问题   继承状态,即从中继承字段的能力   多个班级。

  

Java编程语言支持多种类型的继承,   这是一个类实现多个接口的能力。   一个对象可以有多种类型:它自己的类的类型和   类实现的所有接口的类型。

实现包含相同默认方法的多个接口是form of multiple inheritance.,再次from the same javadoc ...

  

与实现的多重继承一样,类可以继承   定义的方法的不同实现(默认或静态)   在它扩展的接口中。在这种情况下,编译器或   用户必须决定使用哪一个。

所以在任何版本的java中,你都不能扩展多个类Thus answer to your question remains unchanged.