super,this的区别和使用
来源:互联网 发布:mac安装战网失败 编辑:程序博客网 时间:2024/06/05 20:03
this的使用和说明
java的this关键字只能用于方法体内,java虚拟机(JVM)会给这个对象分配一个引用自身的指针,这个指针的名字就是this.
注意:函数参数或者函数中的局部变量和成员变量同名的话,成员变量被屏蔽,此时要访问成员变量则需要使用“this.成员变量”的方式引用成员变量,如果没有同名的情况下,可以直接使用。
运行结果
张三 25Tom5432112345
super的使用和说明
super关键字的作用是用于子类引用父类的成员,如属性、方法或者构造器。
- 调用父类构造器
基本格式是:super([arg_list]);
直接用super()加上父类构造器所需要的参数,就可以调用父类的构造器了。如果父类中有多个构造器,系统自动根据super()中参数个数和参数类型类匹配父类中的构造器。
需要注意的是如果子类中没有显式地调用父类中无参数的构造器,也没有在构造器中调用重载的其它构造器,则系统将会默认调用父类中无参数的构造器。此时如果父类中没有无参的构造器,则编译将会出错。
子类中的成员方法在使用super的时候,一般尽可能的使用private私有化。
子类构造方法调用父类的构造方法一般用super(参数列表)的方式调用,参数不是必须的。同时还要注意,super(参数列表)这条语句只能用在子类构造方法体中的第一行。
- 调用父类方法、属性
当super用于引用父类的属性或方法时,使用下面的格式:
super.属性
super.方法([arg_list])
注意,在这个时候,父类的属性或方法必须是那些protected或者public等可以让子类访问的属性或者方法。
案例分析
public class Father { public String v = "父类Father"; public String x = "父类的成员变量"; public Father() { System.out.println("Father无参构造方法被调用"); } public Father(String v) { this.v = "Father有参构造方法被调用"; } public void showMessage() { System.out.println("Father的showMessage()方法被调用"); } public static void main(String args[]) { //自动生成存根方法 }}
public class Son extends Father { public String v = "子类Son"; public Son() { //调用父类的构造方法,且只能放在第一行 super(); System.out.println("Son的无参构造方法被调用"); } public Son(String str) { super(str); System.out.println("Son的有参构造方法被调用"); } //覆盖了父类的成员方法showMessage() public void showMessage() { System.out.println("Son的showMessage()方法被调用"); } public void test() { String v = "局部变量v覆盖了成员变量v和超类变量v"; System.out.println("---------------------------"); System.out.println("子类局部变量v="+v); System.out.println("子类成员变量v="+this.v); System.out.println("父类成员变量v="+super.v); System.out.println("子类继承而来的超类成员变量x="+x); System.out.println("超类成员变量x="+super.x); System.out.println("---------------------------"); showMessage();//调用子类的showMessage()方法 this.showMessage();//调用子类的showMessage()方法 super.showMessage();//调用父类的showMessage()方法 } public static void main(String args[]) { Son son =new Son(); son.test(); }}
0 0
- super,this的区别和使用
- super关键字;this和super的区别
- this和super的区别
- super和this的区别
- super和this的区别
- this和super的区别
- Super和This的区别
- this和super的区别
- this和super的区别
- this和super的区别
- super和this的区别
- super和this的区别
- this和super的区别?
- this和super的区别
- this和super的区别
- this 和 super 的区别
- this和super的区别:
- this和super的区别
- OD使用心得
- 原子性和一致性
- Java虚拟机学习之类初始化
- Linux USB 驱动开发实例(一) —— USB摄像头驱动实现源码分析
- JDBC学习笔记(七):返回自动主键
- super,this的区别和使用
- 输出以二叉树表示的算术表达式
- JavaScript中多位数相加处理方法
- 对于软件开发的体会
- 第一次面试的心得体会
- linux :make: gcc: Command not found
- http-equiv="X-UA-Compatible" 设置IE浏览器兼容模式
- 网络基本概念之TCP, UDP, 单播(Unicast), 多播(组播)(Multicast)
- 求赋权图中一个结点到所有结点的最短路径的长度