看看这道题怎么理解的?看着答案不知道为什么?
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; }
Answer: ACEFG
----------------解决方案--------------------------------------------------------
首先看什么是方法重写:子类中的方法与父类中方法同名、同参数、同返回值类型,访问权限不能缩小 就是方法重写(或方法覆盖);
再看什么是方法重载:一个类中可以声明多个同名但不同参数的方法,叫方法重载。
1.首先看这几个选项中哪个符合方法重写(同名、同参、同返回值类型)?
有A、B两项大概符合,但因为B选项的返回值权限private小于父类中的protected,所以不够成重写,所以B不对。
2.那么再看那些符合方法重载(同名、不同参)?
是CEFG
3.最后只剩下D选项,D选项是同名、同参,但返回值类型不同,所以既不是重写也不是重载,所以D错误。
----------------解决方案--------------------------------------------------------
c 也是private,c为啥符合?
----------------解决方案--------------------------------------------------------
回复 2楼 lireach
B. private int blipvert(int x) { return 0; } 同名,同参数列表,同返回值 为重写, 而private把访问权限缩小了.C. private int blipvert(long x) { return 0; }同名,不同参数列表,为重载
----------------解决方案--------------------------------------------------------
楼主多半是英语不过关。。。
----------------解决方案--------------------------------------------------------