关于对象多态性
下面的程序不明白,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没实现接口跟它使用接口没有任何关系,只要你传入一个正确的接口实现程序就会正确的运行。不恰当的比喻,你想看电影直接去电影院(电影的实现类)看就行了,不用自己拍个电影来看。
[解决办法]