• 继承和接口课后作业


    动手动脑及验证:

    一、

    TestInherits.java实例运行结果及结论:

    代码:class Grandparent

     {

       

     public Grandparent()

     {

           

         System.out.println("GrandParent Created.");

       

    }

       

     public Grandparent(String string)

    {

            

           System.out.println("GrandParent Created.String:" + string);

      

      

    }

    }

    class Parent extends Grandparent 

    {

       

     public Parent() 

    {

        //super("Hello.Grandparent.");

          

     System.out.println("Parent Created");

      

         // super("Hello.Grandparent.");

      

     }

    }

    class Child extends Parent

     {

        public Child() 

    {

          

      System.out.println("Child Created");

       

    }

    }

    public class TestInherits {

       

     public static void main(String args[])

     {

        

        Child c = new Child();

      

      }

    }

    结果:

    结论:通过super调用基类的方法,必须是子类构造方法中的第一个语句。

    二、思考题

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

    解:因为构造函数是一种特殊的方法,主要用来在创建函数的时候用于初始化对象,即为对象成员变量赋初始值。总与new运算符一起使用在创建对象的语句中,并且,一个类可以有多个构造函数,课根据其参数个数的不同或者参数类型的不同来区分。

    构造对象,先调用其构造方法,用来初始化其成员函数和成员变量。子类拥有父类的成员变量和成员方法,则从父类继承而来的成员变量和成员方法得不到正确的初始化。

    不能反过来调用,因为父类不知道子类有什么变量而且子类也得不到初始化的父类变量,导致程序出错。

  • 相关阅读:
    归并两路有序链表
    [转]两种高性能I/O设计模式(Reactor/Proactor)的比较
    linux 静态库使用经验
    系统性能调优经验
    编译-O 选项对性能提升作用
    [转]Linux shell中的那些小把戏
    shell函数传递带空格的参数
    标题清洗引发的算法(两个字符串的最长公共子串)
    正则表达式之Matcher类中group方法
    ConcurrentHashMap JDK 1.6 源码分析
  • 原文地址:https://www.cnblogs.com/jingjing0629/p/4947735.html
Copyright © 2020-2023  润新知