日期:2014-05-20  浏览次数:20688 次

子类用父类方法的小问题,在线等
下面各选项可以在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. 建议你进一步看看如果父类,子类中加入异常时是怎么影响的。

希望对你有帮助。
------解决方案--------------------
探讨

子类在重写父类的方法的时候,访问权限不能进一步缩小,所以原来声明protected类型不能使用private修饰,所以B不对,A是扩大了访问权限,相当于重写了method方法,C是重载了method方法,使用了不同的参数int ,long,而D因为方法名和参数列表相同,所以会编译报错,java里面返回值无法用来区分方法,就是方法名和参数列表

------解决方案--------------------
探讨
子类在重写父类的方法的时候,访问权限不能进一步缩小,所以原来声明protected类型不能使用private修饰,所以B不对,A是扩大了访问权限,相当于重写了method方法,C是重载了method方法,使用了不同的参数int ,long,而D因为方法名和参数列表相同,所以会编译报错,java里面返回值无法用来区分方法,就是方法名和参数列表

------解决方案--------------------
重写和重载的问题
------解决方案--------------------
一个是重写,一个是重载,理解了还是有好处了,但是实践中用处不多,写程序才是正道
------解决方案--------------------
探讨
考的知识点是访问限制修饰符,共四个,顺序是public>protected>默认>private,

子类重写的方法的限制修饰符不能低于父类,比如父类是public,子类只能是public。

这里,父类用的protected,子类重写父类的方法只能使用protected和public,所以A对B不对。

而C和D不是父类的方法,因为返回值不一样,所以没有修饰符的限制,我看不出C和D哪……

------解决方案--------------------
3楼正解+1。
上学的时候很喜欢也就这类四种茴香豆写法的习题,但是现在看来,貌似没有太多的实际作用。虽然我承认理论很重要,但是在实际教学中我们学习理论所消耗的精力与这些理论给我们带来的收益不太成比例。
------解决方案--------------------
3楼正解+1。
上学的时候很喜欢也就这类四种茴香豆写法的习题,但是现在看来,貌似没有太多的实际作用。虽然我承认理论很重要,但是在实际教学中我们学习理论所消耗的精力与这些理论给我们带来的收益不太成比例。