Java高级类(1)-2
依旧期末复习用·····
this与super关键字
this关键字
当一个对象被创建后,就会给它分配一个this指针。
this 只能在非静态方法中使用!!!
this 不和类关联,每分配一个对象就会有一个this指针指向这个被分配的对象。同一个类的不同对象有不同的this。
在三种情况下需要用到this:
1)通过this调用另一个构造方法,用法是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
2)函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。
3)在函数中,需要引用该函所属类的当前对象时候,直接用this。
class A(){
private int a;
A(int a){class A(){
private int a;
A(int i){
a=i;
}
A(){
this(1)//第一种情况
}
}
}
}
class A(){
private int a;
A(int a){
this.a=a;//第二种情况
}
}
class A(){
private int a;
pbulic void fun ( ){
system.out.println("a的值为"+this.a);//第三种情况
}
}`
super 关键词
关键字super指向使用它的类的父类,关键字super可以用于两种途径:
1)调用父类的构造方法。
2)调用父类的方法。
同样 super只能在非静态方法中使用!!!
语句super()和super(参数)必须出现在子类构造方法的第一行,而且这是调用父类构造方法的唯一方式。
package test;
class father{
private int a=10;
public int b=10;
}
public class son extends father {
public void fun(){
//System.out.println("a的值为"+super.a);
System.out.println("b的值为"+super.b);
}
public static void main(String[] args) {
son s=new son();
s.fun();
// TODO Auto-generated method stub
}
}
经过验证super也不能访问父类的私有成员,由此可见经private关键词修饰后的变量、方法,只允许本类中的成员使用。