1.this
- java用this指向当前对象
- 可以用来区分对象的成员变量与方法的形参
private String name;
public Test(String name){
this.name = name;
}
示例代码
package com.mark.TestOther;
public class thisTest {
private int a = 10;
public void test(){
this.a = 1;
}
//静态方法
public static void test1(){
this.a = 1;//编译时出错
}
public static void main(String[] args){
thisTest test = new thisTest();
}
}
类成员变量在实例方法中可以用this关键字去调用;但是static静态方法中不可以使用this。
2.super
1.可以用来访问父类的方法或者成员变量
2.当子类构造函数需要显性调用父类的构造函数的时候,super()必须为构造函数的第一行语句。
示例代码1:
package Test_10;
class Base{
public void f(){
System.out.println("Base:f()");
}
}
class Sub extends Base{
//方法重写
public void f(){
System.out.println("Sub:f()");
}
public void basef(){
//调用父类的f()方法
super.f();
}
public void subf(){
f();
}
}
public class Test {
public static void main(String[] args){
Sub sub = new Sub();
sub.subf();
sub.basef();
}
}
运行结果:
Sub:f()
Base:f()
示例代码2:
package test11;
/**
* super.getClass().getName()
* 返回:包名+类名(当前正在运行的类)
*/
import java.util.Date;
public class SuperTest extends Date{
private static final long serialVersionUID = 1L;
private void test(){
System.out.println(super.getClass().getName());
}
public static void main(String[] ags){
new SuperTest().test();
}
}
补充:
- this()和super()不可以出现在同一个构造函数中。