JAVA继承时的this和 super关键字

继承时单继承不可多继承

同一个构造器内 this()和super()不可同时存在,因为它们都需要在构造器内部第一行执行

接下来写两个对象展示一下

父类Pepole

//Pepole的对象 有年龄和性别两种属性
public class Pepole {
    public String name;
    public String sex;

    //创建一个有参构造器
    public Pepole(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }

    //创建一个无参构造器  本来是默认存在的 但是如果创建一个 有参的构造器的话 必须创建一个无参构造器
    public Pepole() {
    }

    public String getName() {
        return name;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "Pepole{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }

子类

public class Student extends Pepole{
    public String schoolName;


    public Student(String name, String sex, String schoolName) {
        super(name, sex);
        this.schoolName = schoolName;
    }

    public Student() {
    }

    //创建一个两个参数的构造器接受 家里蹲大学的
    public Student(String name, String sex) {
        this(name, sex, "家里蹲大学");
    }


    public String getSchoolName() {
        return schoolName;
    }

    public void setSchoolName(String schoolName) {
        this.schoolName = schoolName;
    }



    public void studentInfo(){
        System.out.println("===姓名==="+super.name+"===性别==="+super.sex+"===学校==="+this.schoolName);

    }


    @Override
    public String toString() {
        return "Student{" +
                "schoolName='" + schoolName + '\'' +
                '}';
    }




当前代码实现的是当只传入两个对象时,第三个参数默认为家里蹲大学



this()关键字调用的是兄弟构造器,也就是当前对象的其他构造器,

    //创建一个两个参数的构造器接受 家里蹲大学的
    public Student(String name, String sex) {
        this(name, sex, "家里蹲大学");
    }

super()关键字调用的是父类构造器,也就是当前子类的父类构造器

//注意当前构造器是 两个参数时调用的this()方法调用的构造器,其中super()方法本来是默认的但是这里我指定调用到了父类有参的构造器方法


    public Student(String name, String sex, String schoolName) 
        super(name, sex);
        this.schoolName = schoolName;
    }


运行

    public static void main(String[] args) {
        //当输入没有输入学校时 默认家里蹲大学
        Student student=new Student("李四","男");
        student.studentInfo();
    }

运行结果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值