Object类是根基类,接口和Object是什么关系呢?
接口会从Object继承么?
我的疑惑是因为:
class B extends C implements A {
public static void main(String[] args) {
A a = new B();
a.toString();//没问题
// a.c(); 报错
}
} interface A {} class C {
public void c() {}
}
老师说,new B 的时候会先构造一个父类对象,所以最后这个B对象出来了,B中有一个C,而C中又有一个Object
现在父类引用指向子类对象,接口A类型的引用a 指向了这个B对象,
那么应该是a只能访问自己这个接口的内容啊(如A接口定义的成员变量和方法)
同样的都是B的父类,
为什么能调用父类Object的toString()方法?
为什么调父类C的方法c() 不行?
有道理可讲么?
----
另外小弟深信理解了内存就理解了一切,但是很多书都是讲语法,讲道理,很少提及内存,
请问那些高手是怎么知道的呢?怎么知道的写一行代码,相应的运行起来以后,内存的情况的?
各位高手能否推荐一些书或者什么资料呢?
希望高手给予指点,谢谢大家了,感激不尽.
接口会从Object继承么?
我的疑惑是因为:
class B extends C implements A {
public static void main(String[] args) {
A a = new B();
a.toString();//没问题
// a.c(); 报错
}
} interface A {} class C {
public void c() {}
}
老师说,new B 的时候会先构造一个父类对象,所以最后这个B对象出来了,B中有一个C,而C中又有一个Object
现在父类引用指向子类对象,接口A类型的引用a 指向了这个B对象,
那么应该是a只能访问自己这个接口的内容啊(如A接口定义的成员变量和方法)
同样的都是B的父类,
为什么能调用父类Object的toString()方法?
为什么调父类C的方法c() 不行?
有道理可讲么?
----
另外小弟深信理解了内存就理解了一切,但是很多书都是讲语法,讲道理,很少提及内存,
请问那些高手是怎么知道的呢?怎么知道的写一行代码,相应的运行起来以后,内存的情况的?
各位高手能否推荐一些书或者什么资料呢?
希望高手给予指点,谢谢大家了,感激不尽.
是因为接口A里面没有定义c()这个方法。
如果你要用c()的话,就这样:
C a = new B();
a.c();
这样就不会错或者把你的a.c();改一下,改成:((C)a).c();也可以,强制转换成C类,因为a继承了C.你用A接口定义的a,那么,这个a里就只能用A接口里定义了的东西。