一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

JAVA -----super,this的區(qū)別及構(gòu)造函數(shù)的使用

 集微筆記 2013-07-28

最近把自己比較犯暈的幾個小的JAVA知識點(diǎn)整理出來,一是回顧一下JAVA的知識,而是方式以后忘記

1、構(gòu)造函數(shù)的使用

類有哦一個特殊的成員方法叫做構(gòu)造方法,它的作用是創(chuàng)建對象并初始化成員變量。在創(chuàng)建對象時,會自動調(diào)用類的構(gòu)造方法。

JAVA中構(gòu)造方法必須與該類具有相同的名字,并且沒有方法的返回類型(包括沒有void)。另外,構(gòu)造方法一般都應(yīng)用public 類型來說明,這樣才能在程序的任意位置創(chuàng)建類的實(shí)例---對象。

每個類至少有一個構(gòu)造方法。如果不寫一個構(gòu)造方法,JAVA將提供一個默認(rèn)的,該構(gòu)造方法沒有參數(shù),而且方法體為空。

注意:如果一個類中已經(jīng)定義了構(gòu)造方法則系統(tǒng)不再提供默認(rèn)的構(gòu)造方法

例子:

 

Java代碼 復(fù)制代碼 收藏代碼
  1. package test01;   
  2.   
  3. public class Hello {   
  4.     int id;   
  5.     String username;   
  6.     String password;   
  7.     public Hello(int id)   
  8.     {   
  9.         this.id = id;   
  10.         System.out.println("構(gòu)造函數(shù)1:id=" id);   
  11.            
  12.     }   
  13.     public Hello(int i,String username,String password)   
  14.     {   
  15.         //此時,i這個局部變量沒有和成員變量重名,所以不用指定   
  16.         this.username = username;   
  17.         this.password = password;   
  18.         System.out.println("構(gòu)造函數(shù)2:username=" username " password=" password);   
  19.     }   
  20.     public Hello()   
  21.     {   
  22.         //用this調(diào)用上面的構(gòu)造函數(shù),必須上面有定義下面才能使用。   
  23.         this(5,"hualang","123456");   
  24.     }   
  25.        
  26.     public static void main(String args[])   
  27.     {   
  28.         Hello hello1 = new Hello(3);   
  29.         Hello hello2 = new Hello(4,"loulijun","666666");   
  30.         Hello hello3 = new Hello();   
  31.            
  32.     }   
  33.   
  34. }  

 輸出結(jié)果:

 

Java代碼 復(fù)制代碼 收藏代碼
  1. 構(gòu)造函數(shù)1:id=3  
  2. 構(gòu)造函數(shù)2:username=loulijun password=666666  
  3. 構(gòu)造函數(shù)2:username=hualang password=123456  

 

2、super,this的區(qū)別及使用

JAVA的this關(guān)鍵字只能用于方法體內(nèi),JAVA虛擬機(jī)(JVM)會給這個對象分配一個引用紫森的指針,這個指針的名字就是this,因此,this只能在類中的非靜態(tài)方法中使用,靜態(tài)方法和靜態(tài)的代碼塊中不能使用this,比如main方法中是不能使用this的,并且this只和特定的對象關(guān)聯(lián),而不和類關(guān)聯(lián),同一個類中的的不同對象有不同的this。

注意:函數(shù)參數(shù)或者函數(shù)中的局部變量和成員變量同名的話,成員變量被屏蔽,此時要訪問成員變量則需要使用

"this.成員變量"的方式引用成員成員變量,如果沒有同名的情況下,可以直接使用。

 

Java代碼 復(fù)制代碼 收藏代碼
  1. package test01;   
  2.   
  3. public class ThisTest {   
  4.     private int number;   
  5.     private String username;   
  6.     private String password;   
  7.     final private int x = 6;   
  8.     public ThisTest(int number)   
  9.     {   
  10.         this.number = number;   
  11.     }   
  12.     public ThisTest(int number, String username, String password)   
  13.     {   
  14.         //成員變量和參數(shù)同名,成員變量被屏蔽,用“this.成員變量”的方式訪問成員變量   
  15.         this.number = number;   
  16.         this.username = username;   
  17.         this.password = password;   
  18.     }   
  19.     public ThisTest()   
  20.     {   
  21.         this(1,"通過this調(diào)用另一個構(gòu)造方法(3個參數(shù))","111111");   
  22.     }   
  23.     public ThisTest(String name)   
  24.     {   
  25.         this(2,name,"通過this調(diào)用另一個構(gòu)造方法");   
  26.     }   
  27.        
  28.     public void test()   
  29.     {   
  30.         //局部變量與成員變量同名,成員變量被屏蔽,用"this.成員變量"的方式訪問成員變量   
  31.         int x;   
  32.         x = this.x  6;   
  33.         System.out.println("局部變量x=" x);   
  34.         System.out.println("成員變量this.x=" this.x);   
  35.     }   
  36.        
  37.     public void showMessage(ThisTest t)   
  38.     {   
  39.         System.out.println("-----------------------");   
  40.         System.out.println(t.number);   
  41.         System.out.println(t.username);   
  42.         System.out.println(t.password);   
  43.         System.out.println("-----------------------");   
  44.         test();//可以使用this.test()調(diào)用   
  45.     }   
  46.     public static void main(String args[])   
  47.     {   
  48.         ThisTest t1 = new ThisTest();   
  49.         ThisTest t2 = new ThisTest("loulijun");   
  50.         t1.showMessage(t1);   
  51.         t2.showMessage(t2);   
  52.     }   
  53. }  

 

 運(yùn)行結(jié)果如下:

 

Java代碼 復(fù)制代碼 收藏代碼
  1. -----------------------   
  2. 1  
  3. 通過this調(diào)用另一個構(gòu)造方法(3個參數(shù))   
  4. 111111  
  5. -----------------------   
  6. 局部變量x=12  
  7. 成員變量this.x=6  
  8. -----------------------   
  9. 2  
  10. loulijun   
  11. 通過this調(diào)用另一個構(gòu)造方法   
  12. -----------------------   
  13. 局部變量x=12  
  14. 成員變量this.x=6  

 

運(yùn)行結(jié)果分析:

main函數(shù)中首先創(chuàng)建兩個ThisTest對象,t1、t2,然后調(diào)用用著兩個對象調(diào)用showMessage()方法,并且將自己作為參數(shù)傳遞給showMessage(),比如t1.showMessage(t1):這個方法會以這個對象調(diào)用number,username,password,以及test()方法,從而打印出數(shù)據(jù)

 

下面是super的使用及說明

super和this作用類似,使被屏蔽的成員變量或者成員方法課件,或者說用來引用被屏蔽的成員變量和成員方法。

不過super是用在子類中,目的是訪問直接父類中被屏蔽的成員,注意是直接父類(類之上最近的超類)。

 

1、在使用super的時候,一般盡可能的使用private私有化

 

2、子類構(gòu)造方法調(diào)用父類的構(gòu)造方法一般用super(參數(shù)列表)的方式調(diào)用,參數(shù)不是必須的。同時還要注意,super(參數(shù)列表)這條語句只能用在子類構(gòu)造方法體中的第一行

 

3、當(dāng)子類方法中的局部變量或者子類的成員變量與父類成員變量同名時,也就是子類局部變量覆蓋父類成員變量時,用

"super.成員變量名"來引用父類的成員變量。當(dāng)然,如果父類的成員變量沒有被覆蓋,也可以用"super.成員變量名"來引用父類成員變量,不過這是不必要的

 

4、當(dāng)子類的成員方法覆蓋了父類的成員方法時,也就是子類和父類有完全相同的方法定義(但方法體可以不同),此時,用"super.方法名(參數(shù)列表)"的方式訪問父類的方法

 

父類Father.java

 

Java代碼 復(fù)制代碼 收藏代碼
  1. package test01;   
  2.   
  3. public class Father {   
  4.     public String v = "父類Father";   
  5.     public String x = "父類的成員變量";   
  6.        
  7.     public Father()   
  8.     {   
  9.         System.out.println("Father無參構(gòu)造方法被調(diào)用");   
  10.     }   
  11.     public Father(String v)   
  12.     {   
  13.         this.v = "Father有參構(gòu)造方法被調(diào)用";   
  14.     }   
  15.     public void showMessage()   
  16.     {   
  17.         System.out.println("Father的showMessage()方法被調(diào)用");   
  18.     }   
  19.        
  20.     public static void main(String args[])   
  21.     {   
  22.         //自動生成存根方法   
  23.     }   
  24. }  
 

 

子類Son.java

 

Java代碼 復(fù)制代碼 收藏代碼
  1. package test01;   
  2.   
  3. public class Son extends Father {   
  4.     public String v = "子類Son";   
  5.     public Son()   
  6.     {   
  7.         //調(diào)用父類的構(gòu)造方法,且只能放在第一行   
  8.         super();   
  9.         System.out.println("Son的無參構(gòu)造方法被調(diào)用");   
  10.     }   
  11.     public Son(String str)   
  12.     {   
  13.         super(str);   
  14.         System.out.println("Son的有參構(gòu)造方法被調(diào)用");   
  15.     }   
  16.     //覆蓋了父類的成員方法showMessage()   
  17.     public void showMessage()   
  18.     {   
  19.         System.out.println("Son的showMessage()方法被調(diào)用");   
  20.     }   
  21.        
  22.     public void test()   
  23.     {   
  24.         String v = "局部變量v覆蓋了成員變量v和超類變量v";   
  25.   
  26.         System.out.println("---------------------------");   
  27.         System.out.println("子類局部變量v=" v);   
  28.         System.out.println("子類成員變量v=" this.v);   
  29.         System.out.println("父類成員變量v=" super.v);   
  30.         System.out.println("子類繼承而來的超類成員變量x=" x);   
  31.         System.out.println("超類成員變量x=" super.x);   
  32.         System.out.println("---------------------------");   
  33.         showMessage();//調(diào)用子類的showMessage()方法   
  34.         this.showMessage();//調(diào)用子類的showMessage()方法   
  35.         super.showMessage();//調(diào)用父類的showMessage()方法   
  36.     }   
  37.        
  38.     public static void main(String args[])   
  39.     {   
  40.         Son son =new Son();   
  41.         son.test();   
  42.     }   
  43. }  

 

 

運(yùn)行Son.java,結(jié)果如下:

 

Java代碼 復(fù)制代碼 收藏代碼
  1. Father無參構(gòu)造方法被調(diào)用   
  2. Son的無參構(gòu)造方法被調(diào)用   
  3. ---------------------------   
  4. 子類局部變量v=局部變量v覆蓋了成員變量v和超類變量v   
  5. 子類成員變量v=子類Son   
  6. 父類成員變量v=父類Father   
  7. 子類繼承而來的超類成員變量x=父類的成員變量   
  8. 超類成員變量x=父類的成員變量   
  9. ---------------------------   
  10. Son的showMessage()方法被調(diào)用   
  11. Son的showMessage()方法被調(diào)用   
  12. Father的showMessage()方法被調(diào)用  
 

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美日韩国产另类一区二区| 欧美一区二区口爆吞精| 国产传媒一区二区三区| 欧美日韩中国性生活视频| 亚洲欧洲精品一区二区三区| 久久少妇诱惑免费视频| 久久热中文字幕在线视频| 男女一进一出午夜视频| 日本午夜乱色视频在线观看| 麻豆91成人国产在线观看| 亚洲做性视频在线播放| 国产精品不卡高清在线观看| 精品al亚洲麻豆一区| 日本高清加勒比免费在线| 欧美日韩国产自拍亚洲| 人妻久久这里只有精品| 狠狠干狠狠操在线播放| 亚洲精品国产主播一区| 美女被后入福利在线观看| 久久精品中文字幕人妻中文| 欧美精品久久男人的天堂| 视频一区中文字幕日韩| 国产目拍亚洲精品区一区| 亚洲国产精品久久网午夜| 九九蜜桃视频香蕉视频| 国产超碰在线观看免费| 中文日韩精品视频在线| 99免费人成看国产片| av免费视屏在线观看| 日韩人妻中文字幕精品| 中文字幕精品人妻一区| 日韩精品在线观看一区| 日本高清视频在线观看不卡| 美女露小粉嫩91精品久久久 | 成年人黄片大全在线观看| 中文字幕乱码免费人妻av| 精品人妻少妇二区三区| 欧美亚洲91在线视频| 欧美日韩综合综合久久久| 日本不卡一区视频欧美| 四季精品人妻av一区二区三区|