this关键字与super关键字含义及区别

this关键字
this表示当前对象引用(注意不是当前对象). 可以借助 this 来访问对象的字段和方法。

  1. this . 属性 (区别成员变量和局部变量)
  2. this . () (调用本类的某个方法)
  3. this . () (调用本类构造方法,只能用在构造方法的第一行)
  4. this关键字只能出现在非static修饰的代码中
    在这里插入图片描述
class Person { 
 private String name;//实例成员变量
 private int age; 
 private String sex; 
 
 //默认构造函数 构造对象
 public Person() { 
 //this调用构造函数
 this("小bit~", 22, "woman");//必须放在第一行进行显示
 } 
 
 //这两个构造函数之间的关系为重载。
 public Person(String name,int age,String sex) { 
 this.name = name; 
 this.age = age; 
 this.sex = sex; 
 } 
 public void show() { 
 System.out.println("name: "+name+" age: "+age+" sex: "+sex); 
 } 
} 
public class Main{ 
 public static void main(String[] args) { 
 Person person = new Person();//调用不带参数的构造函数
 person.show(); 
 }

// 执行结果
name: 小bit~ age: 22 sex: woman

super 关键字
如果需要在子类内部调用父类方法怎么办? 可以使用super 关键字。

  1. super 表示父类对象
  2. super . 属性 (表示父类对象中的成员变量)
  3. super . 方法(表好似调用父类构造方法)
  4. super只能用在构造方法的第一行

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 关键字, 才是调用父类的方法
在这里插入图片描述
注意:

  1. 如果this和super只带构造方法,则必须放在方法体第一行。即this和super在一个方法体中只能出现一个,并且只能出现一次,否则在实例化对象时,会因为子类调用多个构造方法而造成混乱。
  2. 由于this和super都在实例化阶段调用,所以不能在静态方法和静态代码块中使用this和super关键字。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值