this是指本類的當前對象,而super是指本類的父類的當前對象;使用this調用本類的屬性和方法,而使用super調用父類的屬性和方法。
當本類中沒有覆蓋父類的屬性或者方法時,可以不使用super關鍵字就可以調用父類的屬性或者方法;需要注意的是子類調用構造函數(shù)的時候,需要先調用父類的構造函數(shù),然后在調用本類的構造方法(因此需要在本類的構造函數(shù)里面的第一行寫上super(),這個方法里面的參數(shù)可以有也可以沒有,根據(jù)需要而定)。

下面附個小程序:

class People{
 private String name;
 private int age;
 
 public People(){
  System.out.println("先調用父類無參數(shù)構造方法");
 }
 public People(String n){
  System.out.println("先調用父類構造方法");
 }
 
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 //set人的屬性
 public void setInfor(String name,int age){
  this.setName(name);
  this.setAge(age);
 }
 //get人的屬性
 public void getInfor(){
  System.out.print("姓名:"+this.getName()+"   年齡:"+this.getAge());
 }
}


class Student extends People{
 private String school;
 
 public Student(){
  super("a");
  System.out.println("后調用學生構造方法");
 }
 
 public String getSchool() {
  return school;
 }
 public void setSchool(String school) {
  this.school = school;
 }
 //set學生的屬性
 public void setInfor(String name,int age,String school){
  super.setInfor(name, age);
  this.setSchool(school);
 }
 //get學生的屬性
 public void getInfor(){
  super.getInfor();
  System.out.println("  學校:"+school);
 }
 
}


public class Extends {
 public static void main(String [] args){
  Student student = new Student();
  student.setInfor("王倩",23,"河北理工");
  student.getInfor();
  
 }

}


需要特別注意的是:子類調用構造函數(shù)的時候,需要先調用父類構造函數(shù),因此要把super()寫在構造函數(shù)里面的第一行;子類的setInfor方法和getInfor方法都調用了父類的相對應的方法。

下面看看運行結果: