一个抽象类是与一个或多个抽象方法(或这仅仅是任意使用标记的抽象类abstract关键字).使用抽象类,您无法创建实例; 你必须从类中派生(派生),实现任何抽象方法,然后创建子类的实例.本教程中的更多内容.
Runnable是一个接口,因此不是Java意义上的抽象类.然而:
在更一般的计算机科学/ OOP意义上,你可以说Java接口是一个抽象类,因为它像抽象类一样定义了一个契约,但你不能直接实例化它,你必须实现它.它不是 Java意义上的一个,但对于一般情况有一个论点.
在Java 8中(尽管Runnable不这样做),现在可以使用方法的"默认"实现来定义接口,这使得这些接口和Java的普通抽象类之间的区别非常微妙.(剩下的区别与继承有关;你不能从Java中的多个类继承,但你可以从一个类和任意数量的接口继承,甚至是使用默认方法的接口.)但是,Runnable同样没有默认方法.
Thread是一个没有标记的类,abstract没有abstract方法,因此可以直接实例化.所以它也不是Java或一般CS意义上的抽象类.然而:
Thread只有当你将它子类化并覆盖它的run方法时才有用,或者(如果你通常首选的话)编写一个实现该Runnable实例的类并将其实例传递给该Thread构造函数.本教程中的更多内容.| 归档时间: |
|
| 查看次数: |
3554 次 |
| 最近记录: |