首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于对象多态性,该怎么处理

2012-09-11 
关于对象多态性下面的程序不明白,PC类没有实现USB接口,它们都不认识啊,怎么在方法里还能帮接口实现多态性;

关于对象多态性
下面的程序不明白,PC类没有实现USB接口,它们都不认识啊,怎么在方法里还能帮接口实现多态性;
就是两者没有直接关系,怎么不出错啊??????????
interface USB
{
public void start() ;

public void stop() ;
}
class PC
{
public void plugin(USB u) 
{
u.start() ;
u.stop() ;
}
};
class UDisk implements USB
{
public void start()
{
System.out.println("U盘开始工作了。。。") ;
}
public void stop()
{
System.out.println("U盘停止工作了。。。") ;
}
};

public class OODemo05
{
public static void main(String args[])
{
new PC().plugin(new UDisk()) ;
}
};

[解决办法]
PC不需要实现USB接口呀,因为PC是通过plugin(USB u) 方法来握着USB接口的,这样,只要是实现了USB接口的东西(例如你的UDisk 类)就可以插到PC上。
[解决办法]
这也是实现多态的一种机制 
java中非基本类型的函数参数传的是引用 
public void plugin(USB u)
{
 u.start() ;
 u.stop() ;
 }
[解决办法]
方法:plugin(USB u),传的参数是USB接口,所以方法体里面就可以调用接口里面的方法,跟PC有没有实现USB接口没有关系的
[解决办法]
PC虽然没有实现USB接口,但PC在使用USB啊,你把USB通过参数传给PC,PC自然就间接获得USB的功能。
相当于你拿着AK47对着敌人射击,可你不是抢啊,好好想一想就明白了。
[解决办法]
PC没有帮接口实现“多样性”,是你传入的接口的一个实现让接口“多样性”,PC没实现接口跟它使用接口没有任何关系,只要你传入一个正确的接口实现程序就会正确的运行。不恰当的比喻,你想看电影直接去电影院(电影的实现类)看就行了,不用自己拍个电影来看。
[解决办法]

探讨

PC虽然没有实现USB接口,但PC在使用USB啊,你把USB通过参数传给PC,PC自然就间接获得USB的功能。
相当于你拿着AK47对着敌人射击,可你不是抢啊,好好想一想就明白了。

[解决办法]
四楼和六楼说的很清楚了,LZ,PC是在利用,
[解决办法]
PC里调用了u.start() ;u.stop() ;两个方法,这两个方法都是USB类的方法,并且USB类的子类重写了这两个方法,这两个方法是UDisk类的,并不是PC的

[解决办法]
PC不需要实现USB接口呀,因为PC是通过plugin(USB u) 方法来握着USB接口的,这样,只要是实现了USB接口的东西(例如你的UDisk 类)就可以插到PC上,方法:plugin(USB u),传的参数是USB接口,所以方法体里面就可以调用接口里面的方法,跟PC有没有实现USB接口没有关系的!

热点排行