标题: 输出是什么? [打印本页] 作者: 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怎么知道调用哪个方法
,这就是问题所在,所以就不能通过编译.
----------------------------------------------------
建议你了解一下方法的重写与重载.