java面向对象--继承(构造方法的访问特点)

一、引言 ( 简单介绍构造方法的特点)

        在 Java 中,面向对象编程中的继承机制允许子类继承父类的属性和方法。当涉及到构造方法时,有一些特定的规则需要遵循。以下是在继承中构造方法访问的一些关键特点:
构造方法的访问特点
1、构造方法的调用顺序:
        子类构造器会隐式或显式地调用其直接父类的构造器。
如果没有显式调用父类的构造器,那么编译器会默认添加一个对无参构造器的调用 super();。
调用父类构造器的语句必须是子类构造器的第一条语句。
2、显式调用父类构造器:
        可以使用 super() 显式调用父类的无参构造器。
使用 super(参数列表); 显式调用父类的某个带参数的构造器。
如果父类没有无参构造器,那么必须显式调用有参构造器。
3、构造器链:
        当父类构造器被调用时,它可能会继续调用更上层的父类构造器,形成一个构造器调用链。
这个链最终会到达继承层次结构的最顶层——Object 类,因为所有 Java 类都是直接或间接继承自

二、构造方法访问特点

1.父类中构造的方法不会被子类继承,因为这个会违反方法的定义规则,子类的方法名与类名不一致,会报错。

 2.子类中所有的构造方法都默认会先访问父类中的无参构造,再去执行自己。

3.那为什么会会有这一步?

  很简单,因为父类里面的变量都是可以被子类共有的,这一步就相当于给父类中的变量做了初始化,如果每一个这个默认,那子类调用时就会没有初始值了。子类在初始化的时候,可能会用到父类的数据,如果没有对父类进行初始化,那就子类无法使用父类的属性!

三、怎么调用父类构造方法 ?

子类方法的第一步都是:super(),这个是默认的,即使不写也是会存在的。且必须是在第一行。

package 继承练习2;

public class person {
    String name;
     int age;
    public person(){
        System.out.println("无参构造开始");
    }
    public person(String name, int age){
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

假设这个是定义的一个Person类,这里面的属性都可以被子类继承并使用,接着我们在定义一个student的子类来继承Person

package 继承练习2;

public class student extends person{
    public  student(){

        System.out.println("子类的空参构造");
    }
    public student( String name,int age){
        super(name, age);

    }
}

然后再定义一个Test测试类来运行程序

package 继承练习2;

public class Test {
    public static void main(String[] args) {
//        student s= new student("zhangsan",11);
        student s2 =new student();
//        System.out.println(s.name+"  "+s.age);

    }
}

当我们运行程序的时候,得到结果是这样的,很明显这符合,在空参的情况的,会先出初始化父类,然后再执行子类的方法。

至于,如何调用父类的构造方法,把上面的代码注释去调即可。值得注意的是,在子类中全参的构造方法中,因为已经在父类中存在,所以在用的时候是supr(name,age)。

 四、总结

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值