zoukankan      html  css  js  c++  java
  • 课后作业

    (一)通过 super 调用基类构造方法,必须是子类构造方法中的第一个语句,为什么?

    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必须在构造方法中的第一句 如果父类的不存在有参构造方法,此时写不写super无所谓,子类构造方法一定会调用super(), 如果父类的 存在有参构造方法,此时必须指定是哪一个父类的构造方法

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

    答:构造一个对象,先调用其构造方法,来初始化其成员函数和成员变量。子类拥有父的成员变量和成员方法,如果不调用,则从父类继承而来的成员变量和成员方法得不到正确的初始化。在面向对象的功能里,声明一个类后,为这个类声明一个方法,这个方法名和类名是一样的,例如声明一个People类,然后在这个类里声明一个方法People() ,它的作用就是用来初始化方法

    (三)请自行编写代码测试以下特性:

    在子类中,若要调用父类中被覆盖的方法,可以使用super关键字子类可以调用父类的任何非私有方法。 因为java中有重写的概念,如果在子类中定义某方法与其父类有相同的名称和参数,该方法被重写,在Java中子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字(super.datacreat();),该关键字引用了当前类的父类。

    public class Creature {//父类 {//非静态代码块 System.out.println("creature的非静态代码块正在执行"); } public Creature(){      System.out.println("creature的构造函数正在执行");   } } 子类代码如下: public class Animal extends Creature { { System.out.println("animal的初始化代码块正在执行"); } public Animal(){ System.out.println("animal的构造方法正在执行"); } public static void main(String[] args){ Animal a = new Animal()  ; } }

  • 相关阅读:
    9.1做JS的题目(2)
    9.1做JS的题目
    8.31做JS的题目
    8.30做JS的题目
    扫码跳转微信小程序(服务端微信API生成二维码)
    扫码跳转微信小程序(微信公众平台配置测试二维码)
    项目配置:maven下载与配置、tomcat下载与配置
    Java基础:常用工具_API
    Java基础: 抽象类、接口、final关键字、static关键字
    java基础: 封装、继承、多态
  • 原文地址:https://www.cnblogs.com/niujunyan/p/4937701.html
Copyright © 2011-2022 走看看