Given:
1. public class Blip{
2. protected int blipvert(int x){return 0;}
3. }
4. class Vert extends Blip{
5. //insert code here
6. }
Which five methods, inserted independently at line 5, will compile? (Choose five.)
A. public int blipvert(int x){return 0;}
B. private int blipvert(int x){return 0;}
C. private int blipvert(long x){return 0;}
D. protected long blipvert(int x){return 0;}
E. protected int blipvert(long x){return 0;}
F. protected long blipvert(long x){return 0;}
G. protected long blipvert(int x, int y){return 0;}
答案:ACEFG
下面这个题目能不能给我解释一下每个选项呢?(java)
答案:3 悬赏:50 手机版
解决时间 2021-03-18 02:48
- 提问者网友:焚苦与心
- 2021-03-17 03:32
最佳答案
- 五星知识达人网友:舍身薄凉客
- 2021-03-17 04:13
A是重写父类方法,没有问题
B重写父类方法的时候,将范围由protected 改为private,缩小了,是错的
C是方法重载,参数类型不同了,是不同的方法,对的
D是错的,返回值不能作为重载的区别之一
E是重载方法,名字一样,参数不同
F也是重载,和E一样
G也是重载,参数2个,不一样了,是对的
B重写父类方法的时候,将范围由protected 改为private,缩小了,是错的
C是方法重载,参数类型不同了,是不同的方法,对的
D是错的,返回值不能作为重载的区别之一
E是重载方法,名字一样,参数不同
F也是重载,和E一样
G也是重载,参数2个,不一样了,是对的
全部回答
- 1楼网友:人间朝暮
- 2021-03-17 06:18
子类覆盖父类函数的时候,其访问权限不能比父类的更为严格。
父类的方法是blipvert参数是int型的X;
这样直接就可以排除A,D,E,F,他们的访问权限都没有比父类更为严格,
剩下BC,但是c的参数是long类型的,不是父类中int类型的,
这是子类自己新建的一个函数,跟父类无关,当然可以用privat修饰。
那么B是覆盖了父类的方法,但是访问权限却更为严格,所以B是不对的。
- 2楼网友:话散在刀尖上
- 2021-03-17 05:11
本题考点 是继承时的方法重写和访问权限。
A对:继承父类方法,访问权限变大。
B错:继承父类的方法,权限不能变小。
CEFG对:它们都对父类方法进行了重写,除了方法名相同,子类方法与父类没有关系。
D错:继承父类方法时,不能改变返回类型。
再看看别人怎么说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯