概述
this关键字:
一.this是什么?
this是一个引用类型,
在堆中的每一个java对象上都有this,
this保存内存地址指向自身。
二.this及this()能用在哪些地方?
- this可以用在成员方法中.
- this()可以用在构造方法中.语法:
- this(实参);
- 通过一个构造方法去调用另一个构造方法。
- 目的:代码重用。
- this(实参);必须出现在构造方法的第一行。
应用实例:
public class ThisTest01{
public static void main(String[] args){
/*
//创建对象
MyDate t1 = new MyDate(2008,8,8);
System.out.println(t1.year+"年"+t1.month+"月"+t1.day+"日");
//创建对象
MyDate t2 = new MyDate(2012,12,20);
System.out.println(t2.year+"年"+t2.month+"月"+t2.day+"日");
*/
MyDate t3 = new MyDate();
System.out.println(t3.year+"年"+t3.month+"月"+t3.day+"日");
}
}
//日期
class MyDate{
//Field
int year;
int month;
int day;
//Constructor
//需求:在创建日期对象的时候,默认的日期是:1970-1-1
MyDate(){
this(1970,1,1);
/*
this.year = 1970;
this.month = 1;
this.day = 1;
*/
}
MyDate(int _year,int _month,int _day){
year = _year;
month = _month;
day = _day;
}
}
this为什么不能用在静态方法中.
- 静态方法的执行根本不需要java对象的存在。直接使用 类名. 的方式访问。而this代表的是当前对象。所以静态方法中根本没有this
- 根据构造方法的执行顺序,静态的方法是先于对象存在的,也就是说在静态方法加载的时候有,对象还没有创建!!!
三.super()用在构造方法中:
语法:super(实参);
作用:通过子类的构造方法去调用父类的构造方法.
语法规则:一个构造方法第一行如果没有this(...);也没有显示的去调用super(...);
系统会默认调用super();
注意:
- super(...);的调用只能放在构造方法的第一行.
- super(....)和this(....)不能共存。
- super(...);调用了父类中的构造方法,虚拟机会创建父类对象,但不是new 出来的;是虚拟机在执行字节码时在初始化方法 init(该方法在字节码中)中创建的对象!!!
- 在java语言中只要是创建java对象,那么Object中的无参数构造方法一定会执行。
四.super关键字做引用,
语法:super.xx 来调用父类的成员方法或成员变量:
注意:super是一个引用但是却没办法输出,Sun公司也没有给出相关的声明,导致此处有些模棱两可,所以不必纠结其他,记住这个结论就行
最后
以上就是陶醉指甲油为你收集整理的java中this、super、this()、super()的用法和区别的全部内容,希望文章能够帮你解决java中this、super、this()、super()的用法和区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复