国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

舉例講解Java編程中this關鍵字與super關鍵字的用法

2019-11-26 14:29:14
字體:
來源:轉載
供稿:網友

this
總要有個事物來代表類的當前對象,就像C++中的this指針一樣,Java中的this關鍵字就是代表當前對象的引用。
它有三個主要的作用:
1、在構造方法中調用其他構造方法。
      比如有一個Student類,有三個構造函數,某一個構造函數中調用另外構造函數,就要用到this(),而直接使用Student()是不可以的。
2、返回當前對象的引用。
3、區分成員變量名和參數名。
看下面的例子:

public class Student {   private String name;   private int age;   private String college;   public Student()   {     age = 20;   }   public Student(String name)   {     this();//can not be call Student,only use this() method.     this.name = name;     System.out.println("this student name is "+name);   }   public Student(String name,String college)   {     this(name);//C++中可以直接用Student(name)調用其他構造函數     this.college = college;     System.out.println("this student name is "+name+" college is "+college);       }    public Student upgrade()   {     age++;     return this;   }    public void print()   {     System.out.println("name is: "+name         +" age is: "+age         +" college is: "+college);   }    public static void main(String[] args)   {     Student student1 = new Student("linc");     Student student2 = new Student("linc","shenyang college");     student2.upgrade().print();   } } 

迷失在茫茫的對象海洋時,不要忘了用this來找到自我。

super
super是this的父輩。從面相對象的角度說,這兩個概念是很好理解的。
子類從父類繼承過來,父類的protected及以上的屬性和方法在子類中是天生就具有的。那么,為什么還要有super這個關鍵字?
第一、看父類的構造
子類構造時要先調用父類的默認構造函數的,這與C++的構造屬性一致。當父類有多個構造函數時,你需要指定調用哪個。這是就需要使用super(arg1,arg2...)。
需要注意的是,在子類的構造函數中調用基類的構造函數時,必須要把super寫作最前面,否則報錯。
第二,在子類覆蓋父類的一些方法中再調用父類的此方法。大家都知道,在子類中覆蓋父類的一些方法是面向對象中多態的一種方式,而因為其他種種原因,需要在此方法中調用父類的此方法,用以區分,此時需要使用super來完成。

public class ClassLeader extends Student {   private String duty;   public ClassLeader()   {     duty = "class monitor";   }   public ClassLeader(String duty,String name,String college)   {     super(name,college);     this.duty = duty;   }    public void print()   {     super.print();     System.out.println("duty is " + duty);   }      public static void main(String[] args)    {      ClassLeader leader = new ClassLeader("life","linc","shenyang");   leader.print();   }     } 

將兩個類文件放在同一個目錄,編譯并運行:

D:/workspace/Java/project261/super>javac -d . *java  D:/workspace/Java/project261/super>java ClassLeader 

運行結果:

this student name is linc this student name is linc college is shenyang name is: linc age is: 20 college is: shenyang duty is life 

看看在其他語言中是怎樣來處理的:
C#中提供了base關鍵字來完成super相似的功能,C++直接用基類的名字來調用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沙坪坝区| 延边| 佛教| 肇东市| 南岸区| 勐海县| 仁寿县| 澳门| 万宁市| 德庆县| 茌平县| 儋州市| 白水县| 清水河县| 德钦县| 贡山| 府谷县| 昔阳县| 红河县| 海城市| 建湖县| 名山县| 敦化市| 揭阳市| 治县。| 惠安县| 库伦旗| 盖州市| 滦南县| 奉节县| 农安县| 乌拉特中旗| 临颍县| 德清县| 攀枝花市| 韶关市| 陈巴尔虎旗| 辽阳县| 武山县| 大冶市| 任丘市|