日期:2014-05-20  浏览次数:20679 次

多态和接口把我搞懵了
有这样一段代码 

[code]

package Interface;

public class Testmain {

public static void main(String[] args) {
//接口也可以多态
Talkable t =new students();
t.speak();
//如果想用接口里没有的抽象方法需要强制转换
Studyable s = (Studyable)t;
s.study();


students S=(students)t;

S.speak();
S.study();
}
}
[/code]


Talkable 和 Studyable 两个接口 就是两句话 没什么东西

老师在画内存模型时 说 对象 S s t都是同一个对象 搞得我晕了



------解决方案--------------------
首先 Talkable t =new students();new的是一个studens对象,说明一个类型是Talkable的引用变量指向的是 new Studens这个对象(这里记做a)而Studyable s = (Studyable)t;是强制转换 比如你 double d = 2.2,int i = (int)d;c和d指的对象时同一个吧?如果这个道理你明白了
那么Studyable s = (Studyable)t;s和t是同一个对象么?
同理S  s  t都是同一个对象。
希望对你有帮助