• 继承2


    1、子类继承父类时构造方法的调用规则如下:

    (1)如果子类的构造方法中没有通过super显示调用 父类的有参构造方法,也没有通过this显示调用其自身的其它构造方法,则系统会默认先调用父类的无参构造方法,在这种情况下是否写super();语句,效果都一样:

    实例如下:

     1 package com.cn.jicheng2;
     2 /*
     3  * 父类A
     4  */
     5 public class A {
     6     private int age;
     7     private String name;
     8     public A(){
     9         
    10     }
    11     public A(String name,int age){
    12         this.name=name;
    13         this.age=age;
    14     }
    15     public void show(){
    16         System.out.println("姓名是:"+this.name+"
    年纪是:"+this.age);
    17     }
    18 }
     1 package com.cn.jicheng2;
     2 /*
     3  * 子类B
     4  */
     5 public class B extends A{
     6     private String sex;
     7 
     8     public String getSex() {
     9         return sex;
    10     }
    11 
    12     public void setSex(String sex) {
    13         this.sex = sex;
    14     }
    15     
    16 }
    1 package com.cn.jicheng2;
    2 
    3 public class Test {
    4     public static void main(String[] args) {
    5         B b=new B();//这个测试类中,实例了子类的对像,符合第一条规则,默认也会调用父类的无参数构造方法,父类的无参构造方法就是new A();
    6         //所以子类才可以调用父类的方法
    7         b.show();
    8     }
    9 }

    (2)如果子类的构造方法中通过super显示调用父类的有参构造方法,那么将执行父类相应的构造方法,而不执行父类的无参构造方法

    package com.cn.jicheng2;
    /*
     * 父类A
     */
    public class A {
        private int age;
        private String name;
        public A(){
            System.out.println("父类的无参构造方法输出");
        }
        public A(String name,int age){
            this.name=name;
            this.age=age;
        }
        public void show(){
            System.out.println("姓名是:"+this.name+"
    年纪是:"+this.age);
        }
    }
    
    
    package com.cn.jicheng2;
    /*
     * 子类B
     */
    public class B extends A{
        private String sex;
    
        public B(String name,int age) {
            super(name,age);//调父类的有参构造方法
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
        
    }
    
    package com.cn.jicheng2;
    
    public class Test {
        public static void main(String[] args) {
            B b=new B("jj",12);
            b.show();
        }
    }

    (3)如何子类的构造方法中通过this显示调用自身的其它构造方法,在相应构造方法中应用以上两条规则。

  • 相关阅读:
    [编程题] 数组中的重复数字
    Redis数据结构之集合命令
    Redis数据结构之字符串命令
    Docker安装mysql
    后缀数组与字符串匹配
    牛客小白月赛11 Rinne Loves Edges
    牛客小白月赛11 Rinne Loves Xor
    牛客练习赛39 B.选点
    欧拉函数
    51 Nod 1700 首尾排序法
  • 原文地址:https://www.cnblogs.com/sincoolvip/p/5499500.html
Copyright © 2020-2023  润新知