完成课件中的动手动脑的或需要验证的相关内容。

信1605-3 于丁一  20163578

为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来?

 

构造函数的主要作用是初始化,因为子类继承了父类,所以父类有的东西子类也有,所以在子类的构造方法运行之前必须调用父类的构造方法。不能反过来,因为子类继承父类所以要有个顺序来执行,先有父类再有子类,所以不能反过来。

 

  • 请自行编写代码测试以下特性(动手动脑):
    • 在子类中,若要调用父类中被覆盖的方法,可以使用super关键字

 

 

//信1605-3 于丁一 20163578

package super调用;

 

 class Animal {

       public int age=10;

       public String name;

       public void eat(){

              System.out.println("有吃东西的能力");

       }

       public Animal(int age){

              this.age=age;

       System.out.println("构造方法执行了");

       }

      

 

}

 class Dog extends Animal{

       public int age=20;

       public void eat(){

              System.out.println("狗有吃骨头的能力");

              }

              public Dog(int age){

                     super(age);

                     System.out.println("Dog构造方法执行了");

              }

}

 public class Test {

        public static void main(String[] args){

               Animal a=new Animal(10);

               a.eat();

               Dog b=new Dog(20);

               b.eat();

               

        }

结果截图:

 

  • 运行以下测试代码

 

 

 

回答问题:

1.   左边的程序运行结果是什么?

2.   你如何解释会得到这样的输出?

3.   计算机是不会出错的,之所以得

                  到这样的运行结果也是有原因的,

                  那么从这些运行结果中,你能总

                  结出Java的哪些语法特性?

         请务必动脑总结,然后修改或编写一些代码进行测试,验证自己的想法,最后再看         后面的PPT给出的结论

 

 

运行前的结果猜想:

100

200

200

201(错误)

201

实验结果截图:

 

解释:前两个结果就是正常输出,第三个将child复制给parent,因为parent是父类,child是子类。所以第四个单纯的parent.myValue++无法实现加一的目的,而第五个体现了parent是child的父类,所以最后结果加一。

posted @ 2017-11-10 11:40  胖虎ydy  阅读(135)  评论(0编辑  收藏  举报