关于接口和内部类的个问题请教下?
代码如下:
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中是多态的表现,通过这个接口可以调用接口里声明的方法,方法具体实现都是在具体实现的类里面