this和super的区别

this和super的区别

总结:this:代表当前对象的引用,谁来调用我我就代表谁。super:代表当前对象对父类的引用

相同点

  1. 都是java关键字,起到指代作用;在构造方法中必须出现在第一行。

  2. 且this() 和super() 不能存在于同一个构造函数中。

  • 第一,this()和super()都必须写在构造函数的第一行;
  • 第二,this()语句调用的是当前类的另一个构造函数而这个另一个构造函数中必然有一个父类的构造器,再使用super()又调用一次父类的构造器, 就相当于调用了两次父类的构造器,编译器不会通过;
  1. this和super不能用于static修饰的变量,方法,代码块;因为this和super都是指的是对象(实例)

不同点

No区别点thissuper
1访问属性访问本类中的属性,如果本类没有此属性则从父类中继续查找直接访问父类中的属性
2调用方法访问本类中的方法,如果本类没有此方法则从父类中继续查找直接访问父类中的方法
3调用构造方法调用本类构造,必须放在构造方法的首行调用父类构造,必须放在子类构造方法首行

注意

在对拥有父类的子类进行初始化时,父类的构造方法也会执行,且优先于子类的构造函数执行;因为每一个子类的构造函数中的第一行都有一条默认的隐式语句super();

应用场景

this:当在方法内需要用到调用该方法的对象时,就用this

具体的:我们可以使用this来区分局部变量和属性

例如:

class Person{
    private int age=10;
    public Person(){
        System.out.println("初始化年龄:"+age);
    }
    public int GetAge(int age){
        this.age=age;
        return this.age;
    }
}

super:

1.super理解为父类的

2.super可以用来调用属性,方法,构造器

3.super的使用,调用属性和方法

  • 我们可以在子类的方法或构造器中,通过使用“super.属性”或“super.方法”的方式,显式的调用父类中声明的属性和方法,但是通常情况下,我们习惯忽略“super.”

  • 特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,则必须显式的使用"super.属性"的方式,表明调用的是父类中声明的属性。

  • 特殊情况:当子类重写了父类中的方法以后,我们想在子类的方法中调用父类中被重写的方法时,则必须显使用"super.方法"的方式,表明调用的是父类中被重写的方法。

  • 今天的分享就到这儿,大家有疑问可以私信我哦,我在这儿等着大家

    今天是持续写作的第 8 / 200 天。可以点赞、评论、收藏啦。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值