栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

    this . 属性 (区别成员变量和局部变量)this . () (调用本类的某个方法)this . () (调用本类构造方法,只能用在构造方法的第一行)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 关键字。

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

super 表示获取到父类实例的引用. 涉及到两种常见用法:

    使用了 super 来调用父类的构造器
public Bird(String name) { 
 super(name); 
}
    使用 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 关键字, 才是调用父类的方法

注意:

    如果this和super只带构造方法,则必须放在方法体第一行。即this和super在一个方法体中只能出现一个,并且只能出现一次,否则在实例化对象时,会因为子类调用多个构造方法而造成混乱。由于this和super都在实例化阶段调用,所以不能在静态方法和静态代码块中使用this和super关键字。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/721784.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号