我觉得这个晚上有一个前肢,
众所周知,所有班级的超级班级都是java.lang.Object
,
但为什么不是抽象类?
答案 0 :(得分:2)
你可以说它只是一个任意的设计决定,但主要的好处是,通过不标记类摘要,你可以创建Object
类型的实例。
由于Object
类的所有方法都已完全实现,因此将其标记为抽象没有固有的好处。
答案 1 :(得分:2)
Object
没有任何抽象方法,所以使类抽象会阻止它被实例化(尽管你可以通过:new Object() {};
)这是一个不必要的限制。
实际上,实例化一个Object有时会很方便,例如创建一个锁:
private final Object lock = new Object();