首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

求指导,方法重写的有关问题

2013-11-16 
求指导,方法重写的问题本帖最后由 alice_sg 于 2013-11-08 10:47:58 编辑做练习的时候有道题目是这样的,为

求指导,方法重写的问题
本帖最后由 alice_sg 于 2013-11-08 10:47:58 编辑 做练习的时候有道题目是这样的,
为什么第一题可以编译通过,而第二题不可以呢?
不是说在重写的时候参数返回值都要一致的吗?
不理解。。。求解答。。


代码如下:
第一题:


class Super {
public float getNum(){
return 3.0f;
}
}


public class Sub extends Super{
public double getNum(float d){
return 0.0d;
}
}



第二题:

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

class Child extends Parent{
public double change(){
return 0;
}
}



[解决办法]
引用:
继承重写条件
1.访问权限不能比父类大(比如父类protected,你子类不能为public)
2.重写要确保:返回类型,方法名,参数名要和被重写的方法一致
3.子类抛出的异常不能超过父类相应方法抛出的异常

你第一题里可以编译的原因:
子类:public double getNum(float d){。。。}
父类:public float getNum(){。。。}

编译器识别。
方法名一样,参数不一样
编译器不认为你在子类里重写了父类里面的方法,编译器认为是子类的特有方法。

你第二题里可以不能编译的原因:
子类: public int change(){。。。}
父类:public double change(){{。。。}
方法名一样,参数一样
编译器认为你在子类里重写了父类里面的方法,但是你的返回类型不一致,就报错了。


希望对你有用,哪些写的不好,请多多包涵

热点排行