代码如下: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();生成的应该是个类对象吧,怎么能返回给接口类型呢?不知哪位能指点一下,老师和同学说的我没太明白,有同学说就是多态,老师说的没听懂。
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();生成的应该是个类对象吧,怎么能返回给接口类型呢?不知哪位能指点一下,老师和同学说的我没太明白,有同学说就是多态,老师说的没听懂。
解决方案 »
- c如何调用返回值为String的java函数
- 优化 RegExp 分数倾囊而出!结贴率100%
- 当 继承JLabel
- 用最少的比较运算次数求最大值
- 如何判断一个组件已经在JPanel 上 显示了
- 求分析Java源程序,生成类图和序列图的java代码!高手救命!
- 求Tomcat在Eclipse3.1.2中的插件 tomcatPluginV3.zip
- 在一个静态方法中访问一个静态变量,如果此变量为一个对象需要对其进行加锁,如果此变量为一个java基本类型,需要对其加锁么?
- 请教大虾lucene返回的hits怎么取到想要的值?
- 哪个高手来看看这个问题,通过就得分
- 关于HashMap的key变化问题???
- 请问用JFileChoose可以写保存窗口么,我见到的都是打开文件窗口,多谢。
看下这个便于理解
另外说多态也对,便于运行时动态绑定
实际上产生的是实现Machine接口的一个实例
这在java中是多态的表现,通过这个接口可以调用接口里声明的方法,方法具体实现都是在具体实现的类里面