Java高级类(1)-2

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关键词修饰后的变量、方法,只允许本类中的成员使用。

你可能感兴趣的:(Java)