【Java学习笔记】super关键字

super 关键字

一、作用:super 代表父类的引用,用于访问父类

  • 属性

  • 方法

  • 构造器

二、说明

  • (1)属性和方法的访问遵循访问权限原则(即不可以访问private修饰的属性和方法)

  • (2)关于构造器:调用父类构造器的好处(分工明确,父类属性由父类初始化,子类的属性由子类初始化)

  • (3)当子类中有和父类中的成员(属性和方法)重名时,为了访问父类的成员,必须通过super,如果没有重名,使用superthis直接访问是一样的效果

  • (4)super的访问不限于直接父类,如果爷爷类和本类中由同名的成员,也可以使用super去访问爷爷类的成员,如果多个基类(上级类)中都有同名的成员,使用super访问遵循就近原则A -> B -> C,当然也要遵守访问权限的相关规则

三、thissuper的区别

No.区别点thissuper
1访问属性访问本类中的属性,如果本类没有此属性则从父类中继续查找从父类开始查找属性
2调用方法访问本类中的方法,如果本类没有此方法则从父类继续查找.从父类开始查找方法
3调用构造器调用本类构造器,必须放在构造器的首行调用父类构造器,必须放在子类构造器的首行
4特殊表示当前对象子类中访问父类对象

代码示例

// 父类
package prac;

public class father {
    int age;
    String name;

    public father() {

    }

    public father(int age) {
        this.age = age;
    }

    public father(int age, String name) {
        this.age = age;
        this.name = name;
    }
    public void show(){
        System.out.println("调用了父类的show方法");
    }
}

//子类
package prac;

public class son extends father {
    public son() {
        super();
        System.out.println("调用父类的无参构造器~");
    }

    public son(int age) {
        super(age);
        this.age = age;
        System.out.println("调用父类构造器public father(int age)");
    }

    public son(int age, String name) {
        super(age, name);
        this.age = age;
        this.name = name;
        System.out.println("调用父类构造器public father(int age, String name)");
    }

    public void show() {
        System.out.println("使用super.age调用父类,super.age:" + super.age);
        System.out.println("使用super.name调用父类,super.name:" + super.name);
        super.show();
    }
}


//主方法
package prac;

public class main {
    public static void main(String[] args) {
        son son = new son();
        System.out.println();

        son son1 = new son(18);
        System.out.println();

        son son2 = new son(18,"jackson");
        System.out.println();

        son2.show();
    }
}

//运行结果
调用父类的无参构造器~

调用父类构造器public father(int age)

调用父类构造器public father(int age, String name)

使用super.age调用父类,super.age:18
使用super.name调用父类,super.name:jackson
调用了父类的show方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

jackson凌

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

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

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

打赏作者

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

抵扣说明:

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

余额充值