super关键字基础语法以及和this的区别

举报
荞慧子 发表于 2022/12/31 23:38:43 2022/12/31
【摘要】 基本介绍        super代表父类的引用,用于访问父类的属性、方法、构造器。基本语法(1)访问父类的属性,但不能访问父类的private属性。 格式:super.属性名;创建A类,再创建B类继承A类public class A { //4个属性 public int n1 = 100; protected int n2 = 200; int n3 = 300;...

基本介绍

        super代表父类的引用,用于访问父类的属性、方法、构造器。

基本语法

(1)访问父类的属性,但不能访问父类的private属性。 格式:super.属性名;

创建A类,再创建B类继承A类

public class A {
    //4个属性
    public int n1 = 100;
    protected int n2 = 200;
    int n3 = 300;
    private int n4 = 400;

    //4个方法
    public void test100() {

    }

    protected void test200() {

    }

    void test300() {

    }

    private void test400() {

    }

    //构造器
    public A(String name) {

    }

    public A(String name , int age) {

    }

    public A() {
        //无参构造器
    }
}

从B类中调用A类的属性

public void attribute() { //attribute 属性
        System.out.println(super.n1 + " " + super.n2 + " " + super.n3);
    }

可以发现,如果调用private类型的n4,则会报错

(2)访问父类的方法,但不能访问父类的private方法。 格式:super.方法名(参数列表);

调用父类中的方法也是一样的,如果调用了私有类型的方法则会报错

public void method() { //method 方法
        super.test100();
        super.test200();
        super.test300();
    }

(3)访问父类的构造器。格式:super(参数列表);
         注意:只能放在构造器的第一句,且只能出现一句。

public B() {
//        super();
//        super("zwy");
        super("zwy" , 18);
    }

如果调用两次构造器则会报错

this与super的区别

No. 区别点 this super
1 访问属性 访问本类中的属性,如果本类没有此属性,则从父类中继续查找 直接从父类开始查找属性
2 调用方法 访问本类中的方法,如果本类没有此方法,则从父类中继续查找 直接从父类开始查找方法
3 调用构造器 调用本类的构造器,必须放在构造器的首行 调用父类的构造器,必须放在子类构造器的首行
4 特殊 表示当前对象 子类中访问父类对象
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。