本文是《Java 入门指南》的第二十三篇文章,介绍了 Java 的 this 和 super。
this 关键字
描述:
this
表示本类,可以调用本类的属性和方法,没有使用限制。
this.propertyName
调用本类的属性,this.methodName()
调用本类的方法(this()
调用本类的构造方法)。
实例:
示例代码:
package com.jianrry.oop;
public class Cat {
String name="Cat";
public void intro(){
System.out.println(this.name+" 是我的名字。");
}
public void say(){
System.out.println(this.name+" 在说悄悄话。");
}
public void action(){
this.say();
}
}
package com.jianrry.oop;
public class Application {
public static void main(String[] args) {
Cat cat=new Cat();
cat.intro();
cat.action();
}
}
运行结果:
Cat 是我的名字。
Cat 在说悄悄话。
super 关键字
描述:
super
表示父类,可以调用父类的非私有的属性和方法,只能在子类中使用。
super.propertyName
调用父类的非私有的属性,super.methodName()
父类的非私有的方法(super()
调用父类的构造方法)。
实例:
示例代码:
package com.jianrry.oop;
public class Animal {
String name="Animal";
public void say(){
System.out.println(this.name+" 在说悄悄话。");
}
}
package com.jianrry.oop;
public class Cat extends Animal {
String name="Cat";
public void intro(){
System.out.println(super.name+" 是我的名字。");
}
public void action(){
super.say();
}
}
package com.jianrry.oop;
public class Application {
public static void main(String[] args) {
Cat cat=new Cat();
cat.intro();
cat.action();
}
}
运行结果:
Animal 是我的名字。
Animal 在说悄悄话。
注意事项:
- 类在初始化时,会自动调用本类的构造方法(即
this()
)。如果该类是某个类的子类时,就会先调用父类的构造方法(即super()
),然后调用本类的构造方法(即this()
)。 - 因为
this()
或super()
必须是构造方法中的第一条语句,所以同一个构造方法中只能存在一个this()
或super()
,不能同时调用this()
和super()
。