this关键字及super关键字的使用

三、this、super关键字的使用
1、成员函数中定义了和成员变量相同的变量时,引用成员变量要用this
2、构造函数中调用同一个类的其他构造函数用this
3、子类中覆盖了于父类成员变量或成员函数时,在子类中调用父类的变量或函数要用super。
4、子类的构造函数里调用父类的构造函数用super。
5、this可以表示任何对象,当this出现在某个方法体中时,它所代表的对象是不确定的。但它的类型是确定的,它所代表的对象只能是当前类。只有这个方法被调用时,它所代表的对象才被确定下来。谁在调用这个方法,this就代表谁。

6、在构造函数里面,首先检查是否有this和super调用,this调用时完成本类内构造函数之间的调用,super 是对父类构造函数的调用。二者只能出现其一,并且只能作为构造函数的第一句出现。在调用this和super时实现程序的跳转,转而执行被调用的构造函数,当调用构造函数后,程序转而去执行在类定义的时候进行的变量的初始化,这个初始化完成后再去执行构造函数里剩下的代码。
7、this除了可以调用成员变量或成员方法之外,还可以作为方法的返回值。如例二,this作为返回值。

一、静态方法中访问的方法和成员变量必须是静态的。

StaticAccessNonStatic.java

package Test8;

public class StaticAccessNonStatic {
//方法info()没用static修饰,不是静态的。所以它是对象相关的方法而不是类相关的方法。
public void info(){
System.out.println("调用了info()方法");
}
public static void main(String[] args) {
//这样调用是 错误 的,因为这相当于this.info();main是静态方法,而info()是非静态方法。static修饰的方法中不能使用this引用,即静态成员不能访问非静态成员。
info(); 这里是 错误 的,如果运行该代码一定把这行注释掉
//如果确实需要在静态方法中访问一个普通方法,则创建一个对象
StaticAccessNonStatic sans=new StaticAccessNonStatic();
sans.info();
}

}

this关键字及super关键字的使用_第1张图片

二、this作为返回值

ReturnThis.java

package Test8;
public class ReturnThis {
public int age=20;
//在grow()方法中,方法的返回值为ReturnThis类,所以方
//法体中使用return this这种形式将ReturnThis类的对象进行返回

public ReturnThis grow(){
age++;
return this;
}
public static void main(String[] args) {
ReturnThis rt=new ReturnThis();
//调用grow()方法,这里连续调用了两次,如果在某个方法
//中,用this作为返回值,则可以多次连续调用同一个方法。

rt.grow()
 .grow();
System.out.println("rt的age属性值是:"+rt.age);
}
}

程序运行结果如图所示:

this关键字及super关键字的使用_第2张图片

你可能感兴趣的:(this关键字及super关键字的使用)