在Java 8中,为什么要实现Runnable接口而不是扩展Thread类?

3

我已经知道我们更喜欢实现Runnable接口而不是扩展Thread类,因为它为我们的类提供了灵活性,我们可以在将来扩展其他类。当我们扩展Thread类时,这是不可能的,因为Java不支持多重继承(在Java 8之前)。现在Java 8发布后,我们可以使用多重继承,因此这两种方法都很灵活。

我的问题是,在Java 8的情况下,实现Runnable接口比扩展Thread类有哪些优缺点?非常感谢您的帮助 :)

1个回答

4
在Java 8中,你也不能扩展多个类。在Java文档中,明确写明:

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

并且

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

实现包含相同默认方法的多个接口是多重继承的一种形式,再次来自同一份Javadoc...

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

因此,在任何版本的Java中,你都不能扩展多个类,因此你的问题的答案保持不变。


1
是的,我错过了这个。我想为这个答案投票,但我没有声望。非常感谢。 - Arjun Thakur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接