代码如下: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();生成的应该是个类对象吧,怎么能返回给接口类型呢?不知哪位能指点一下,老师和同学说的我没太明白,有同学说就是多态,老师说的没听懂。

解决方案 »

  1.   

    http://blog.qingdaonews.com/v/9222/archives/2007/138988.html
    看下这个便于理解
    另外说多态也对,便于运行时动态绑定
      

  2.   

    Machine getMachine() 是一个声明而已。
    实际上产生的是实现Machine接口的一个实例
    这在java中是多态的表现,通过这个接口可以调用接口里声明的方法,方法具体实现都是在具体实现的类里面
      

  3.   

    Machine getMachine() 是一个声明,产生的是实现Machine接口的一个实例,而new MachineHeart();产生的是实现接口Machine的一个对象,也就是实例 。这样理解对不?