• 继承和接口课后作业


    动手动脑及验证:

    一、

    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运算符一起使用在创建对象的语句中,并且,一个类可以有多个构造函数,课根据其参数个数的不同或者参数类型的不同来区分。

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

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

  • 相关阅读:
    两数相加(B站看视频总结)
    正则表达式基础1
    C语言程序的错误和警告
    C语言运算符优先级和结合性一览表
    逻辑运算符及其优先级,C语言逻辑运算符及其优先级详解
    C 语言实例
    电脑不显示桌面怎么办?
    135编辑器安卓客户端
    C语言实例-大小写字母间的转换
    C 语言实例
  • 原文地址:https://www.cnblogs.com/jingjing0629/p/4947735.html
Copyright © 2020-2023  润新知