What are objects of the Object type useful for
我在SCJP手册的练习题中看到了下面的代码
首先,我认为这可能是一个错误,因为我没有使用这样的语句。现在我明白这是一个有效的声明。
我只是想知道如果有的话,这个的实际用途是什么。您可以将
代码声明一个类型为
现在,类
1 2 3 4 5 | ... synchronized (obj) { ... } ... |
实际使用并不常见(NPE答案就是一个例子),但是由于每个类都继承自对象,所以当您调用它的构造函数时,对象类的构造函数将在某个时候被隐式调用,因此您需要有能力构造一个新的对象。
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class Foo { // implicitly inherits from Object public Foo() { super(); // Object default constructor call } } public class Bar extends Foo { public Bar() { super(); // Foo default constructor call } } Bar b = new Bar(); // new Bar() calls new Foo() that calls new Object() |
需要注意的是,super()(超类构造函数)的调用将被编译器隐式插入。
例如,它可以用于同步:
1 2 3 | synchronized (obj) { ... } |
号
使用新的操作符,可以为对象分配内存,并调用其构造函数。通常,创建对象类的实例在日常编码中不会出现太多。同样重要的是要知道您所创建的每个类都是从对象扩展而来的。