我是靠谱客的博主 陶醉指甲油,最近开发中收集的这篇文章主要介绍java中this、super、this()、super()的用法和区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


this关键字:
一.this是什么?
      this是一个引用类型,   在堆中的每一个java对象上都有this, this保存内存地址指向自身。

二.this及this()能用在哪些地方?
  1. this可以用在成员方法中.
  2. 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()的用法和区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部