java中this 和 super 的用法区别
2021/10/16 11:09:38
本文主要是介绍java中this 和 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
指向当前对象的父类,可以用super.xxx来引用父类的成员
- 子类中的成员变量与父类中成员变量相同时,可以用super.xxx取得父类的成员变量
class Person { String name; public void value() { this.name = "tom"; } } class Student extends Person { String name; public void value() { name = "jack"; super.value(); System.out.println(name); System.out.println(super.name); } } public class studySuperAndThis{ public static void main(String[] args) { Student student = new Student(); student.value(); } }
- 引用构造函数
super(参数):调用父类的构造函数(应该为构造函数中的第一条语句)
this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)
class Person { public static void prt(String s) { System.out.println(s); } Person() { prt("父类·无参数构造方法: " + "A Person."); }//构造方法(1) Person(String name) { prt("父类·含一个参数的构造方法: " + "A person's name is " + name); }//构造方法(2) } class Chinese extends Person { Chinese() { super(); // 调用父类构造方法(1) prt("子类·调用父类“无参数构造方法”: " + "A chinese coder."); } Chinese(String name) { super(name);// 调用父类具有相同形参的构造方法(2) prt("子类·调用父类”含一个参数的构造方法“: " + "his name is " + name); } Chinese(String name, int age) { this(name);// 调用具有相同形参的构造方法(3) prt("子类:调用子类具有相同形参的构造方法:his age is " + age); } }
注意:
- super() 必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句都是隐含调用super()。如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
- this 和 super 不会出现在同一个构造函数中,因为你this调用的是本类的其他构造函数,而本类的其他构造函数又必然含有super,在同一个构造函数中出现相同的语句,就失去了语句的意义,编译也不会通过。
- super 和 this 都是指向对象的,所以均不可在static环境中使用,包括static方法、static变量、static语句块
- super是java的关键字,this是指向本对象的指针
这篇关于java中this 和 super 的用法区别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南