Java中的super与this之间的区别

本文详细介绍了Java编程中关键字`this`和`super`的区别和用途。`this`主要用于引用当前对象,常用于构造器内部调用其他构造器以及区分同名成员。而`super`则用于引用父类的对象,它在子类构造器中用于调用父类构造器。此外,还强调了在创建子类对象时,会先执行父类构造器,以及`this`和`super`不能在静态方法中使用等关键点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

super 与 this 之间的区别:

 

this: 指代当前new对象

1、本类构造器的首行调用本类中的其他构造器this(参数列表)

2、区分局部与成员同名问题(默认就近原则、通过this.调用成员)

super: 指代父类对象

1、子类构造器的首行,通过super(参数)调用父类中的指定构造器

2、如果没有显示通过super(参数)调用,默认调用父类的空构造

3、区分子父类中同名成员(1、如果不存在同名问题 : 可以省略super.调用父类成员;2、如果存

在子父类同名成员问题,同名局部问题;3、默认就近原则(有局部找局部(1、通过this.找子类成

员;2、通过super.找父类成员)))

注意:

1、子父类继承关系下 : 创建子类对象的时候,其实会先父类后子类

2、不能在构造器的首行同时使用this(参数)与super(参数)

3、this与super都不能使用在静态方法中

public class Class001_Super {
    public static void main(String[] args) {
        Zi zi = new Zi("");
        zi.test();
    }
}

class Fu{
    String str = "FuStr";
    public Fu(){
        System.out.println("Fu");
    }
    public Fu(int i){
        System.out.println("Fu");
    }
}

class Zi extends Fu{
    //String str = "ZiStr";
    public Zi(){
        super(100);
        //super();
        System.out.println("Zi");
    }
    public Zi(String s){
        this();
        System.out.println("Zi----String");
    }

    public void test(){
        String str = "local";
        System.out.println(super.str);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值