黑马程序员技术交流社区

标题: 输出是什么? [打印本页]

作者: ssd123mn    时间: 2016-7-15 21:51
标题: 输出是什么?
class Super {
public Integer getLenght() { return new Integer(4); }
}

public class Sub extends Super {
public Long getLenght() { return new Long(5); }
public static void main(String[] args) {
Super sooper = new Super();
Sub sub = new Sub();
System.out.println(sooper.getLenght().toString() + "," +
sub.getLenght().toString() );
}
}
此题有点异议

作者: nengYouDuoNiu    时间: 2016-7-15 22:16
Java程序想要运行,需要先经过编译,然后才是运行.  你写的程序不能通过编译,自然也就不能运行了
作者: 896575538    时间: 2016-7-15 22:18
你这程序通不过编译的,重写父类方法的时候你把返回值类型都改了,肯定不对
作者: nengYouDuoNiu    时间: 2016-7-15 22:23
补充一下原因:
你这样思考问题,子类Sub继承了父类Super,也就继承了父类非私有成员方法getLength(),而你的子类自己也有一个getLength()方法. 那么JVM在调用方法的时候,对象名.方法名(),子父类的方法名都相同,JVM怎么知道调用哪个方法
,这就是问题所在,所以就不能通过编译.
----------------------------------------------------
建议你了解一下方法的重写与重载.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2