标题: 基础问题 [打印本页] 作者: 曹倩 时间: 2012-10-11 19:42 标题: 基础问题 class Super
{
public int get(){return 4;}
}
class Demo15 extends Super
{
public long get(){return 5;}
public static void main(String[] args)
{
Super s=new Demo15();
System.out.println(s.get());
}
}
为什么会编译失败?作者: 张忠豹 时间: 2012-10-11 19:54
当然会编译失败,原因:
Demo15 中写个get(),与Super中的get()方法除了返回值类型不一样之外,函数声明部分都是相同的,这根本不是重写,更不是重载,所以出错!
你要是想在Demo15 中重载get()方法的话,至少参数的类型,或者个数什么的要改变一下。作者: 曾浩 时间: 2012-10-11 19:54
因为Demo15 继承了 Super类 所以他也得到了父类的方法
但是 public long get(){return 5;} 既没有重载也没有重写只是返回的常量不同 一个类中不能同时存在两个一样的方法虽然他们的返回值类型不同 但是在运行时虚拟机就不知道该调用那个方法了
作者: 杨志男 时间: 2012-10-11 20:11
class Super
{
public int get(){return 4;}
}
class Demo15 extends Super
{
public long get(){return 5;} //既不是重载也不是重写,现在这个get()方法是Demo15自己独有的方法