Java中的this和super

①this

  • 在Java中,this关键字代表当前对象的引用。它可以用于以下几个方面:

    1. 引用当前对象的成员变量:使用this关键字可以引用当前对象的成员变量,以区分成员变量和方法参数或局部变量之间的命名冲突。例如,如果一个方法的参数名与成员变量名相同,可以使用this关键字来引用成员变量。

    2. 调用当前对象的构造方法:在一个类的构造方法中,可以使用this关键字来调用同一个类中的其他构造方法。这种方式可以避免代码的重复,提高代码的复用性。

    3. 返回当前对象的引用:在一个方法中,可以使用this关键字来返回当前对象的引用。这在链式调用或方法嵌套的情况下非常有用。

    4. 作为方法参数传递:this关键字可以作为方法参数传递给其他方法,以便在方法中引用当前对象。

    需要注意的是,this关键字只能在非静态方法和构造方法中使用,因为静态方法和构造方法是与类相关而不是与对象相关的。

    总结:this关键字在Java中代表当前对象的引用,可以用于引用当前对象的成员变量、调用当前对象的构造方法、返回当前对象的引用以及作为方法参数传递。它在解决命名冲突、提高代码复用性和实现链式调用等方面非常有用。

  • Java虚拟机会给每个对象分配this,代表当前对象。

②对象在JVM的存在形式

Java中的this和super_第1张图片

字符串属于引用数据类型,所以把字符串放在方法区的常量池中,而基本数据类型放在堆中即可;

在new对象的时刻,会把类的信息加载到方法区; 

③this的使用和注意细节;

(1)this关键字可以用来访问本类的属性,方法,构造器;

(2)this用于区分当前类的属性和局部变量;

(3)访问成员方法的语法:this.方法名(参数列表);

(4)访问构造器语法:this(参数列表);注意只能在构造器中使用;

注意:只能放在构造器第一行

(5)this不能在类定义的外部使用,只能在类定义的方法中使用;

③super

  • 在Java中,super是一个关键字,用于引用父类的成员变量、方法和构造方法。

    1. 引用父类的成员变量: 当子类和父类拥有同名的成员变量时,可以使用super关键字来引用父类的成员变量。这样可以避免子类中的成员变量被隐藏。例如,super.x表示引用父类的成员变量x。

    2. 调用父类的方法: 当子类和父类拥有同名的方法时,可以使用super关键字来调用父类的方法。这样可以在子类中重写父类的方法,同时又能调用父类的方法。例如,super.method()表示调用父类的method方法。

    3. 调用父类的构造方法: 当子类的构造方法需要调用父类的构造方法时,可以使用super关键字来调用父类的构造方法。这样可以确保父类的初始化工作得以完成。例如,super()表示调用父类的无参构造方法,super(x)表示调用父类的带有参数x的构造方法。需要注意的是,super关键字在构造方法中只能用于调用父类的构造方法,并且必须是构造方法的第一条语句。

    需要注意的是,super关键字只能在子类中使用,并且只能用于访问父类的成员变量、方法和构造方法。在静态方法中不能使用super关键字,因为静态方法属于类而不是对象,没有this和super的引用。

④super的基本注意

(1)不能访问父类中的私有属性和方法;

只能放在第一句,只能出现一句;

⑤super和this的比较:

No.
No. 区别点 this super
1

访问属性

访问本类中的属性,

如果本类没有此属性则从父类中继续查找

访问父类中的属性
2

调用方法

访问本类中的方法,

如果没有则从父类中继续查找

从父类开始查找方法
3 调用构造器 调用本类构造器,必须放在构造器的首行

调用父类构造器,

必须放在子类构造器首行

4 特殊 表示当前对象

 子类中访问父类对象

你可能感兴趣的:(java,java,开发语言,jvm)