首页IT科技this和super关键字的作用如何(this和super关键字)

this和super关键字的作用如何(this和super关键字)

时间2025-06-17 20:57:01分类IT科技浏览4360
导读:this关键字 this的本质就是:...

this关键字

this的本质就是:创建好的对象的地址 -> 代表当前对象

构造方法是创建java对象的重要途经            ,通过new关键字调用构造器时                  ,构造器返回该类对象       ,但是该对象并不完全由构造器创建            。

创建对象分为四步:

分配对象空间      ,将对象成员变量初始化为0或null; 执行属性值显式初始化; 执行构造方法; 返回对象地址给相关变量

因为在调用构造方法前                  ,对象已被创建             ,所以this可以在构造方法中充当当前对象

public construct(int id, String name){ this.id = id; this.name = name; }

举个例子      ,分析一下创建对象的过程

class Person { int age; String sex; public Person(int age, String sex) { this.age = age; this.sex = sex; } } public class Demo { public static void main(String[] args) { Person person = new Person(22 ,"boy"); } }

this可以调用重载的构造方法

class Person { int age; String sex; String name; public Person(int age, String sex) { this.age = age; this.sex = sex; } public Person(int age,String sex,String name){ this(age,sex); //this()访问其他构造方法 this.name = name; } }

总结:

this可以用于构造方法中代表当前对象; this也可以调用重载的构造方法                  ,但是必须位于构造方法第一句; this不能用与static方法中

super关键字

访问父类的构造函数:可以使用 super() 函数访问父类的构造函数             ,从而委托父类完成一些初始化的工作                  。应该注意到,子类一定会调用父类的构造函数来完成初始化工作                  ,默认调用父类的无参构造函数                   ,如果子类需要调用父类其它构造函数,那么就可以使用 super() 函数            ,但是必须位于构造方法第一句       。(所以在构造器中this和super不能共存                   ,只能用一个)

访问父类的成员:如果子类重写了父类的某个方法       ,可以通过使用 super 关键字来引用父类的方法实现      。

public class SuperDemo { protected int x; protected int y; public SuperDemo(int x, int y) { this.x = x; this.y = y; } public void func() { System.out.println("调用父类方法"); } } public class SuperExtend extends SuperDemo { private int z; public SuperExtend(int x, int y, int z) { super(x, y); //super()访问父类构造方法 this.z = z; } @Override public void func() { super.func(); //super引用父类方法实现 System.out.println("调用子类方法"); } } 运行结果: 调用父类方法 调用子类方法

两者区别

this super 访问属性 从本类属性开始访问            ,本类有并且可以访问则访问;没有从父类中查找                  ,父类有并且可以访问则访问;如果父类没有则继续向上找直到Object类 直接从父类中开始查找       ,直到Object类 调用方法 调用本类方法      ,本类如果没有此方法或则不能访问                  ,则从父类中调用             ,以此类推      ,直到Object类 直接调用父类方法                  ,直到Object类

总而言之             ,this是先从本类开始查找属性/方法,super是直接从其父类开始查找属性/方法

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
amazonsbgm(使用Amazon SageMaker构建高质量AI作画模型Stable Diffusion) 现在玩大话西游2的人多吗(现在打什么网游赚钱吗-大话西游2赚钱方法及网游挣钱之喜和悲)