黑马程序员技术交流社区
标题:
这段代码哪有问题?
[打印本页]
作者:
wuzeshui
时间:
2016-1-18 23:44
标题:
这段代码哪有问题?
class Fu {
public void show() {
System.out.println("fu show");
}
}
class Zi extends Fu {
public void show() {
System.out.println("zi show");
}
public void method() {
System.out.println("zi method");
}
}
class Test1Demo {
public static void main(String[] args) {
Fu f = new Zi();
f.method();
f.show();
}
}
作者:
zhanganping
时间:
2016-1-19 00:16
多态的应用题;多态的成员方法是编译看父类,运行看子类;此题中f.method()父类中没有此方法,子类中特有的,编译不通过,
作者:
zhanganping
时间:
2016-1-19 00:18
f.show()方法父类中有,子类中也有,编译通过,运行就看子类的方法所以输出的是zi method()
作者:
阿蛮
时间:
2016-1-19 00:23
f.method();这句代码不正确 Fu f = new Zi(); 向上转型后不能使用子类中特有方法,不知道自己说的对不对,要是错了,还希望不要介意
作者:
hansnowqiang
时间:
2016-1-19 08:56
编译看左边运行看右边
作者:
fagug
时间:
2016-1-19 09:29
Fu f = new Zi();,编译时f是Fu的引用,查阅Fu中是否有调用的方法;运行时,f是Zi中的对象,查阅Zi中是否有可调用的成员(编译看左边运行看右边)。(原因是编译期间没有对象建立)
method()是子类中的方法,父类中没有,编译时没有建立对象,在编译期要生成的Fu.class文件中并没有method()方法,所以f.method(); 无法通过编译。
f.show();运行结果是zi show,因为运行时前面建立了Zi的对象实例,当父类引用f指向其子类的对象的时候,子类复写父类的方法,通过f访问的是子类对象的成员。(多态)
作者:
苗超维
时间:
2016-1-19 12:13
f.method() ,这句有错误
作者:
cgy123
时间:
2016-1-19 21:13
Fu f = new Zi();父类 能用子类新建对象吗
作者:
281884702
时间:
2016-1-19 21:52
能创建对象,父类引用指向子类对象,动态绑定 编译看左边运行看右边,所以f.method() ,这句有错误
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2