第八十五课.super关键字-2

1. 父类有无参构造方法,子类才可以写无参构造方法;父类有含参构造方法,子类才可以写含参构造方法

2. 构造方法不能被继承、重写

3. 当调用无参构造方法时,先调用父类无参构造方法,然后调用子类无参构造方法;当调用含参构造方法时,先调用父类含参构造方法,然后调用子类含参构造方法。

注意:子类不显式调用父类的构造方法时,编译器会默认调用父类的无参构造方法

 

非继承关系中的初始化顺序

1.static静态代码块和静态成员

2.普通成员

3.构造函数执行

 

继承关系中的初始化顺序

1.父类静态代码区和父类静态成员

2.子类静态代码区和子类静态成员

3.父类非静态代码区和普通成员

4.父类构造函数

5.子类非静态代码区和普通成员

6.子类构造函数

例:

package com.xuenixiang.web;



public class Super1 {

    protected String name;

    private String address;

   

    public Super1() {

        System.out.println("父类无参构造被调用");

    }

    public Super1(String name,String address) {

        System.out.println("父类有参构造被调用");

    }

   

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getAddress() {

        return address;

    }

    public void setAddress(String address) {

        this.address = address;

    }



}

package com.xuenixiang.web;



public class Super2 extends Super1 {

       private int age;



       public Super2() {

              System.out.println("子类无参构造被调用");

       }



       public Super2(String name, String address) {

              //super(name,address);

              System.out.println("子类有参构造被调用");

       }



       public int getAge() {

              return age;

       }



       public void setAge(int age) {

              this.age = age;

       }



       public void setName(String Mingzi) {

              this.name = Mingzi; // 子类对父类的setName进行重写

              System.out.println("父类的setName方法被重写");

       }



       public void xuenixiang() {

              System.out.println("网站名:" + this.getName());

              System.out.println("网站地址:" + this.getAddress());

              System.out.println("网站年龄:" + this.getAge());

       }



       public static void main(String[] args) {

              Super2 xnx = new Super2("学逆向论坛","www.xuenixiang.com");

              xnx.setName("学逆向论坛");

              xnx.setAddress("www.xuenixiang.com");

              xnx.setAge(1);

              xnx.xuenixiang();

       }

}

 

没有显示调用父类构造方法,所以父类的无参构造方法被默认加载

显示的调用父类的有参构造方法

更详细的原理和步骤参考这两篇文章

https://blog.csdn.net/u011080472/article/details/51330114

https://blog.csdn.net/whut2010hj/article/details/81330381

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuenixiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值