下面的程序不明白,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()) ;
}
};

解决方案 »

  1.   

    PC不需要实现USB接口呀,因为PC是通过plugin(USB u) 方法来握着USB接口的,这样,只要是实现了USB接口的东西(例如你的UDisk 类)就可以插到PC上。
      

  2.   

    这也是实现多态的一种机制 
    java中非基本类型的函数参数传的是引用 
    public void plugin(USB u)  
    {
     u.start() ;
     u.stop() ;
     }
      

  3.   

    方法:plugin(USB u),传的参数是USB接口,所以方法体里面就可以调用接口里面的方法,跟PC有没有实现USB接口没有关系的
      

  4.   

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

  5.   

    PC没有帮接口实现“多样性”,是你传入的接口的一个实现让接口“多样性”,PC没实现接口跟它使用接口没有任何关系,只要你传入一个正确的接口实现程序就会正确的运行。不恰当的比喻,你想看电影直接去电影院(电影的实现类)看就行了,不用自己拍个电影来看。
      

  6.   


    你是Human, AK47实现GUN接口,你拿着AK47对敌人疯狂扫射,就这么简单。
      

  7.   

    四楼和六楼说的很清楚了,LZ,PC是在利用,
      

  8.   

    PC里调用了u.start() ;u.stop() ;两个方法,这两个方法都是USB类的方法,并且USB类的子类重写了这两个方法,这两个方法是UDisk类的,并不是PC的
      

  9.   

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

  10.   

    这里定义的USB的接口是一个标准。对于PC来说只要符合这个USB接口标准的设备就可以插到PC上。PC认的只是接口,而对于具体设备不关心。class PC  {
        public void plugin(USB u)  {    //只要是USB的设备就可以插到PC上
            u.start() ;
            u.stop() ;
        } 
    };