您的位置:首页 > 其它

方法的重写

2017-03-31 17:18 85 查看
/**
方法的重写:发生在父子类中,子类中的方法名、参数列表、返回值与父类相同 ,子类的权限修饰符大于等于父类的权限
*/

class Parent{
public int getInt(){
return 0;
}
}

class Demo9 extends Parent{
//这里的返回值与父类的不同,会报错
public void getInt(){
System.out.println("无返回值 ");
}
}

class Test{
public static void main(String[] args){
Demo9 demo = new Demo9();
int a = demo.getInt();
System.out.println("如果这里a有值,说明getInt()方法没有被重写:"+a);
}
}

结果:

Parent.java:12: 错误: Demo9中的getInt()无法覆盖Parent中的getInt()

        public void getInt(){

                    ^

  返回类型void与int不兼容

Parent.java:20: 错误: 不兼容的类型

                int a = demo.getInt();

                                   ^

  需要: int

  找到:    void

2 个错误

我个人认为,只所以会出现这个问题,还在于系统查找使用方法的顺序上。

因为创建的对像是Demo9,所以,demo在调用getInt()方法时,会先去Demo9中去找,找到了这个名字的方法,在执行时,去发现是无返回值 的,所以报错。如果方法名相同,完全可以抛却父类的那块单独单,如果可以匹配到当前调用,就不会报错,否则,就会出问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息