zoukankan      html  css  js  c++  java
  • 抽象类的有参与无参构造函数的研究

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

    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();
    
    
        }
    }

    结果:

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

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

  • 相关阅读:
    客户(项目)经理应具备那些基本心理素质
    js 添加数组 删除数组
    c# ifram 刷新父页面
    [转].Net ajax检测用户名是否重复
    js 自动执行方法
    js 层 分页显示选择用户名
    c# Cookie的操作
    c# 取IE地址值
    js 弹出层无刷新分页
    iframe 无边框
  • 原文地址:https://www.cnblogs.com/jeasion/p/10758375.html
Copyright © 2011-2022 走看看