Java中的this和super关键字

来自CloudWiki
跳转至: 导航搜索

this关键字

this关键字有两种用法:第一种用法中,this代表它所在类的实例化对象。可以理解为是类对象的一个简单引用,利用this可以连用当前对象的方法和变量,特别是当方法名和变量名很长时,这种调用更加有意义。第二种用法,解决成员变量和局部变量重名的问题。第三种用法,在同一个类中不同构造方法之间的调用需要使用this。

【实例5-4】this关键字的三种用法举例。

public class ThisEx {
	public String name;
	    public int age;
	    public ThisEx(String name) {
		  this.name=name;//参数中的变量名name和属性中的名字name重名
	    }
	    public ThisEx(String name,int age ) {
		  this(name);//调用上面的public ThisEx(String name)构造方法
		  this.age=age; //参数中的变量名age和属性中的名字age重名
	    }
	    public void setAge(int age){
		  this.age=age;
		  this.aComplexMethodPresentations();//调用名字复杂的方法
	    }
	    public void aComplexMethodPresentations(){
		  int age;
		  age=this.age;
	    }
}

【注 意】

  1. 如果在构造方法中调用另一构造方法,则这条调用语句必须放在第一句。

super关键字

super关键字主要的功能是完成子类调用父类中的内容。super有两种用法:第一种用法中,super表示的是所在类的直接父类对象,使用super可以调用父类的属性和方法。第二种用法,子类的构造方法中可以调用父类的构造方法。

【实例5-5】super关键字的两种用法举例。

public class Father {
	  String name;
	  public Father(){
		System.out.println("调用父类构造方法");
	  }
	  public void walk(){
		System.out.println("调用父类walk方法");
	  }
}
public class Child extends Father{
	  public Child(){
		super();//调用父类的构造方法
		System.out.println("调用子类构造方法");
	  }
	  public void walk(){
		super.walk();//调用父类的方法
		System.out.println("调用子类walk方法");
	  }
}

【注 意】

  1. 子类中的无参构造方法默认第一句是调用父类的无参构造方法。使用super调用父类的方法实际上主要是调用被子类覆盖的方法。

返回 Java程序设计