zoukankan      html  css  js  c++  java
  • 子类继承父类,父类中的构造器

    子类继承父类,子类构造器会默认调用super()(无论构造器中是否写有super()),用于初始化父类成员.同时当父类中存在有参构造器时,必须提供无参构造器,子类构造器中并不会自动继承有参构造器,仍然默认调用super(),使用无参构造器。

    PS:构造器是无法被继承的,所以不能重写,但是可以重载。

    原因:构造器是生产对象的一个途径,假如可以被继承,那么对象就可以被复制了。子类可以通过继承构造器产生父类对象,这样就会出现子类引用指向父类对象,java是不支持向下转型的,只能向上转型。

    两种情况:

    (一)父类中同时包含无参构造器和有参构造器时

    package struct;
     
    class parent{
        public parent(int a) {
            System.out.println("我是父类有参构造方法"+a);
            // TODO Auto-generated constructor stub
        }
        
        public parent() {
            // TODO Auto-generated constructor stub
            System.out.println("我是父类无参构造方法");
        }
        
        public void read(){
            System.out.println("我是父类的方法");
        }
    }
     
    public class Test extends parent{
        public Test() {
            System.out.println("我是子类的构造方法");
            super.read();
        }
        public static void main(String[] args) {
            Test t = new Test();
        }
    }

    当子类的构造器中没有实现super()方法时,默认在调用子类构造方法之间先调用父类的无参构造方法,输出的结果为:

    我是父类无参构造方法
    我是子类的构造方法
    我是父类的方法

    也可以在子类构造器中使用super(int a)来调用父类的有参构造方法,即将子类的构造器改为:

    public Test() {
        super(5);
        System.out.println("我是子类的构造方法");
        super.read();
    }

    输出为:

    我是父类有参构造方法5
    我是子类的构造方法
    我是父类的方法

    (二)父类中只有有参构造器时

    当父类中只有有参构造器时,默认在子类中需要使用super(父类构造器参数)才能调用父类的有参构造器,可以实现继承

    package struct;
     
    class parent{
        public parent(int a) {
            System.out.println("我是父类构造方法"+a);
            // TODO Auto-generated constructor stub
        }
        
        public void read(){
            System.out.println("我是父类的方法");
        }
    }
     
    public class Test extends parent{
        public Test() {
            super(3);
            System.out.println("我是子类的构造方法");
            super.read();
        }
        public static void main(String[] args) {
            Test t = new Test();
        }
    }

    输出为:

    我是父类构造方法3
    我是子类的构造方法
    我是父类的方法

    转自:https://blog.csdn.net/u014800380/article/details/53020085

    往事如烟,余生有我.
  • 相关阅读:
    使用promxy实现prometheus 的ha 以及api 聚合
    victoriametrics 快速高效&&可扩展的时序数据库
    statping web 状态监控服务
    prometheus 一些不错的exporter
    fusionauth 通用sso 解决方案学习二 基本试用
    fusionauth 通用sso 解决方案学习一 环境运行
    zeeqs 一个通用的zeebe 数据查询服务
    zeebe 0.23.1 变动说明
    zeebe 0.23.1 发布
    alpine.js 像使用tailwindcss一样编写js
  • 原文地址:https://www.cnblogs.com/assistants/p/9527780.html
Copyright © 2011-2022 走看看