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

关于接口和内部类的个问题请教下?
代码如下:

interface   Machine   {
void   run();
}

class   Person   {
void   run()   {
System.out.println( "run ");
}
}

class   Robot   extends   Person   {
private   class   MachineHeart   implements   Machine   {
public   void   run()   {
System.out.println( "heart   run ");
}
}

Machine   getMachine()   {
return   new   MachineHeart();
}
}

class   Test   {
public   static   void   main(String[]   args)   {
Robot   robot   =   new   Robot();
Machine   m   =   robot.getMachine();
m.run();
robot.run();
}
}
==============================================
这是个例程,小弟有个地方不明白。
就是这部分:
Machine   getMachine()   {
return   new   MachineHeart();
}

Machine是个接口,定义了一个返回类型为Machine的方法getMachine(),但是return语句里面返回的MachineHeart();不是实现接口Machine的一个内部类嘛,用new   MachineHeart();生成的应该是个类对象吧,怎么能返回给接口类型呢?

不知哪位能指点一下,老师和同学说的我没太明白,有同学说就是多态,老师说的没听懂。

------解决方案--------------------
http://blog.qingdaonews.com/v/9222/archives/2007/138988.html
看下这个便于理解
另外说多态也对,便于运行时动态绑定
------解决方案--------------------
Machine getMachine() 是一个声明而已。
实际上产生的是实现Machine接口的一个实例
这在java中是多态的表现,通过这个接口可以调用接口里声明的方法,方法具体实现都是在具体实现的类里面