请教关于Object与接口的关系!~~~~~~~~~
代码:
------------------------------
public interface TestObject{
public void print();
}
//TestObject是接口
public class Main1{
public static void main(String[] args) {
TestObject testObject = null;
testObject.toString();
}
}
------------------------------
请教,Object是所有类的基类。也就是说,我们定义的任何类都是Object类的子类。所以我们
可以在我们定义的类中调用在Object类中定义的toString方法。
在接口中,规定所有的的方法都是公共的抽象方法。但是在上面的代码中为什么testObjcet可以
调用Object的toString方法呢。
难道接口也继承了Object吗?后来我写了下面的代码:
public interface TestObject extends Objcet{
public void print();
}
结果是报错!
错误提示是:Objcet cannot be resolved to a type
这说明了接口没有继承Object类。那testObject.toString();怎么解释呢?
------解决方案--------------------语法是没有错,但是实际这个程序没有意义。
接口就是接口,不是任何类。接口不能生成实例(对象),与Object毫无关系。
注意:Object是所有类的基类,但接口不是类!!
interface TestObject {
public void print();
}
// TestObject是接口
public class Main1 {
public static void main(String[] args) {
// 这句话不会错,因为只是申明一个TestObject类型的变量
// 接口不能生成实例的意思是如果你new TestObject(),那就一定会报错
TestObject testObject = null;
// 由于testObject是申明为接口类型的,所以编译器会假设它是某个类的对象
// 而且这个类实现了TestObject接口,于是当然可以调用Object的方法
// 因为编译器已经假设它是对象了
// 但实际情况,testObject只是null,
// null调用任何方法都会抛
NullPointerException的
// 所以你这个程序这句话也毫无意义。
testObject.toString();
}
}