• 抽象类的有参与无参构造函数的研究


    即使我们声明一个没有构造函数的抽象类,编译器还会为我们生成一个默认的保护级别的构造函数。子类实例化时(不管是否为带参构造)只会调用所有父类的无参构造函数,而带参构造必须通过显式去调用.调用顺序是先调用抽象类的无参构造函数,如果子类实例化时是使用带餐的构造函数,则再接着调用抽象类的带参构造函数,最后调用子类本身的构造函数。

    abstract class Person {   //定义一个抽象类,必须被继承
    
        public  Person(){
            System.out.println("调用的是父类的无参构造函数");
        }
      public   Person(int i) {
          System.out.println("调用的是父类的有参构造函数");
        }
    }
    
     class Student extends Person {
        //    想调用父类抽象类的有参构造函数必须先显式声明,然后通过super函数调用
        Student(int i) {
            super(i);
            //必须显示的调用父类构造方法,super代表父类对象
            System.out.println("子类的有参构造函数
    ");
        }
    
        //默认调用父类的无参构造函数,同样必须显式声明
        Student(){
            System.out.println("子类的无参构造函数");
        }
    }
    public  class Test {
        public static void main(String[] args) {
            int i=0;
            Student 有参 = new Student(i);
            Student 无参 = new Student();
    
    
        }
    }

    结果:

    调用的是父类的有参构造函数
    子类的有参构造函数

    调用的是父类的无参构造函数
    子类的无参构造函数

  • 相关阅读:
    阅读笔记之FastDepth: Fast Monocular Depth Estimation on Embedded Systems
    AverageMeter一个用来记录和更新变量的工具
    Python中log的简单粗暴的设置和使用
    linux 常用命令
    flutter常用组件总结
    Docker 微服务教程
    Docker 入门教程
    Activiti工作流学习分享
    CentOS7 修改主机名
    Linux中 2>&1 的含义
  • 原文地址:https://www.cnblogs.com/jeasion/p/10758375.html
Copyright © 2020-2023  润新知