Java關鍵字介紹之this與super

總結關鍵字thissuper用法。
author: ZJ 07-3-12
1.什麼是super?什麼是this
super關鍵字表示超(父)類的意思。this變量表明對象自己。
2.使用super&this調用成員變量和方法
可使用super訪問父類被子類隱藏的變量或覆蓋的方法。當前類若是是從超類繼承而來的,當調用super.XX()就是調用基類版本的XX()方法。見示例1
當類中有兩個同名變量,一個屬於類(類的成員變量),而另外一個屬於某個特定的方法(方法中的局部變量),使用this區分紅員變量和局部變量。見示例2
 
示例1
class Person {
    protected void print() {
       System. out .println( "The print() in class Person." );
    }
}
 
public class DemoSuper extends Person {
    public void print() {
       System. out .println( "The print() in class DemoSuper." );
       super .print(); // 調用父類的方法
    }
 
    public static void main(String[] args) {
       DemoSuper ds = new DemoSuper();
       ds.print();
    }
}
 
結果:
The print() in class DemoSuper.
The print() in class Person.
 
示例2
public class DemoThis {
    private String name ;
 
    public void setName(String name) {
       this . name = name; // 前一個 name private name ;後一個 name setName 中的參數。
    }
}
3.使用this表示當前調用方法的對象引用
假設你但願在方法的內部得到對當前對象的引用,可以使用關鍵字thisthis關鍵字只能在方法內部使用,表示對「調用方法的那個對象」的引用。見示例3
 
示例3
Button bn ;
bn.addActionListener( this );
4.使用super&this調用構造子
super(參數):調用基類中的某一個構造函數(應該爲構造函數中的第一條語句)。見示例4
this(參數):調用本類中另外一種造成的構造函數(應該爲構造函數中的第一條語句)。 見示例5
 
示例4
class Person {
    public static void prt(String s) {
       System. out .println(s);
    }
 
    Person() {
       prt( "A Person." );
    }
 
    Person(String name) {
       prt( "A person name is:" + name);
    }
}
 
public class Chinese extends Person {
    Chinese() {
       super (); // 調用父類構造函數。
       prt( "A chinese." );
    }
 
    Chinese(String name) {
       super (name); // 調用父類具備相同形參的構造函數。
       prt( "his name is:" + name);
    }
 
    public static void main(String[] args) {
       Chinese cn = new Chinese();
       cn = new Chinese( "kevin" );
    }
}
 
結果:
A Person.
A chinese.
A person name is:kevin
his name is:kevin
 
示例5
Point( int a, int b){
    x=a;
    y=b;
}
Point(){
    this (1,1); // 調用 point(1,1), 必須是第一條語句。
}
5.使用super&this應該注意些什麼?
1)調用super()必須寫在子類構造方法的第一行,不然編譯不經過。每一個子類構造方法的第一條語句,都是隱含地調用super(),若是父類沒有這種形式的構造函數,那麼在編譯的時候就會報錯。
 
2super()this()相似,區別是,super從子類中調用父類的構造方法,this()在同一類內調用其它方法。
 
3super()this()均需放在構造方法內第一行。
 
4)儘管能夠用this調用一個構造器,但卻不能調用兩個。
 
5thissuper不能同時出如今一個構造函數裏面,由於this必然會調用其它的構造函數,其它的構造函數必然也會有super語句的存在,因此在同一個構造函數裏面有相同的語句,就失去了語句的意義,編譯器也不會經過。
 
6this()super()都指的是對象,因此,均不能夠在static環境中使用。包括:static變量,static方法,static語句塊。
 
7)從本質上講,this是一個指向本對象的指針, 然而super是一個Java關鍵字。
6.參考資料
[1]Thinking in Java 3rd
[2] this super java裏使用時應注意的地方
[url]http://hengdao325200.blog.163.com/blog/static/340522006626114027/[/url]
[3] Java 類體中的thissuper的正確用法
[url]http://xiaocao000.spaces.live.com/Blog/cns!F[/url] 826A 925CF 33491A !126.entry
7.相關介紹
Java關鍵字介紹之static
相關文章
相關標籤/搜索