黑马程序员技术交流社区

标题: 为什么这点代码运行后会输出两次 Boss呢 [打印本页]

作者: 无霜子    时间: 2015-5-6 19:41
标题: 为什么这点代码运行后会输出两次 Boss呢
  1. class Employee{
  2. public Employee(){
  3. hello();
  4. }
  5. void hello() {
  6. System.out.println("Employee");
  7. }
  8. }

  9. class Boss extends Employee{
  10. public Boss(){
  11. hello();
  12. }
  13. @Override
  14. void hello() {
  15. System.out.println("Boss");
  16. }
  17. }
  18. public class Main {
  19. public static void main(String[] args) {
  20. Employee e = new Boss();
  21. }

  22. }
复制代码




作者: 小悟空et    时间: 2015-5-6 20:31
因为主函数创建Boss的对象时,会运行Boss的构造函数;
而Boss继承于Employee,会在构造函数第一行有一个隐藏的super()语句。
出现的两个Boss,一个是类Employee中的hello()打印的,第二个是Boss类中的Hello()打印的

我也刚刚自学完一遍,理解的可能也有问题,上面是个人的想法了
作者: bboyXiaoNuo    时间: 2015-5-6 21:07
因为在子类的构造函数第一行有一个隐含的语句super(),固父类构造函数会被调用,视频里有说这个,我记得很清楚
作者: LPStone    时间: 2015-5-6 21:13
学习学习!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2