this和super

this表示当前对象引用(注意不是当前对象). 可以借助 this 来访问对象的字段和方法
super 表示获取到父类实例的引用. 涉及到两种常见用法:

  1. 使用了 super 来调用父类的构造器
public Bird(String name) { 
 super(name); 
}
  1. 使用 super 来调用父类的普通方法
public class Bird extends Animal { 
 public Bird(String name) { 
 super(name); 
 } 
 @Override 
 public void eat(String food) { 
 // 修改代码, 让子调用父类的接口. 
 super.eat(food); 
 System.out.println("我是一只小鸟"); 
 System.out.println(this.name + "正在吃" + food); 
 } 
}

在这个代码中,如果子类的eat方法直接调用eat(不加super),那他就调的是子类自己的eat,而加上super,才是调用父类的方法
如果父类里不定义无参的构造的话子类的构造函数会报错,所以说明在子类的构造函数默认的都有一句隐式的super();
在子类构造器中如果没有显式的去调用父类构造器,那么就会隐式的调用父类的无参构造器。如果父类无参构造不存在(已经在父类写了带参构造),就必须用super去显式的调用父类带参数的构造器(这时一定要放在第一行)!如果存在就没问题。
区别:
this表示当前对象,是访问本类中的属性和方法,super是由子类访问父类的属性和方法;
this是先查找本类,如果本类没有就调用父类,super是不查找本类,直接调用父类;
this调用本类构造器,必须放在构造器的首行,super调用父类构造器,必须放在子类构造器的第一行。

注意:this与super在构造器里面是不可以同时存在的
super和this两个关键字不能在静态上下文中使用,(this是当前实例的引用, super是当前实例父类实例的引用, 也是和当前实例相关)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值