子类用父类方法的小问题,在线等
下面各选项可以在A的子类中使用的是()
class A {
protected int method (int a, int b) {
return 0;
}
}
A.public int method (int a, int b) { return 0; }
B.private int method(int a, int b) { return 0; }
C.private int method(int a, long b) { return 0; }
D.public short method(int a, int b) { return 0; }
答案:AC
现问:为什么选ac呢,其它的二项为什么不可呢,thanks
[解决办法]
考的知识点是访问限制修饰符,共四个,顺序是public>protected>默认>private,
子类重写的方法的限制修饰符不能低于父类,比如父类是public,子类只能是public。
这里,父类用的protected,子类重写父类的方法只能使用protected和public,所以A对B不对。
而C和D不是父类的方法,因为返回值不一样,所以没有修饰符的限制,我看不出C和D哪个错了。
sorry.认为都对。
[解决办法]
不建议做这些习题,习题害死人啊,有时间敲敲程序吧!
[解决办法]
子类在重写父类的方法的时候,访问权限不能进一步缩小,所以原来声明protected类型不能使用private修饰,所以B不对,A是扩大了访问权限,相当于重写了method方法,C是重载了method方法,使用了不同的参数int ,long,而D因为方法名和参数列表相同,所以会编译报错,java里面返回值无法用来区分方法,就是方法名和参数列表
[解决办法]
3楼+1
[解决办法]
D解释
java中重写(方法名和参数类型和个数一样),返回类型要和父类一样!
[解决办法]
这个题考的是访问修饰符的顺序public>protected>默认>private
以及父类与子类之间的关系,子类可以继承父类的方法,也可以重写覆盖。父类没有的子类可以增加,父类有的子类可以改变
[解决办法]
就是重写和重载的问题。。
[解决办法]
顶 3楼+1
[解决办法]
理解这个有时还是有用的:
1. 面试题中经常出现这类题。了解了只有好处。
2. 对你进一步理解设计模式,比如里氏替换(Liskov Substitution Prince)有帮助
3. 建议你进一步看看如果父类,子类中加入异常时是怎么影响的。
希望对你有帮助。
[解决办法]