Java編程中this關鍵字與super關鍵字的使用方法
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. = name; tln("this student name is "+name); } public Student(String name,String college) { this(name);//C++中可以直接用Student(name)調用其他構造函數 ege = college; tln("this student name is "+name+" college is "+college); } public Student upgrade() { age++; return this; } public void print() { tln("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"); ade()t(); } }
迷失在茫茫的對象海洋時,不要忘了用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); = duty; } public void print() { t(); tln("duty is " + duty); } public static void main(String[] args) { ClassLeader leader = new ClassLeader("life","linc","shenyang"); t(); } }
將兩個類文件放在同一個目錄,編譯並運行:
D:workspaceJavaproject261super>javac -d . *java D:workspaceJavaproject261super>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++直接用基類的名字來調用。
-
java讀取解析xml文件實例
如何在Java中讀取解析文件呢?下面小編為大家整理了java讀取解析xml文件實例,希望能幫到大家!讀取本地的xml文件,通過DOM進行解析,DOM解析的特點就是把整個xml文件裝載入內存中,形成一顆DOM樹形結構,樹結構是方便遍歷和和操縱。DOM解析的特性就是讀取xml文件轉換為dom...
-
全面理解java中的異常處理機制精選
一、java異常總結:異常就是程序運行時出現不正常運行情況1.異常由來:通過java的類的形式對現實事物中問題的描述,並封住成了對象其實就是java對不正常情況描述後的對象體現2.對於問題的劃分有兩種:一種是嚴重的問題,一種是非嚴重的問題對於嚴重的,java通過Error類來...
-
Java開發崗位面試題
為幫助參加Java開發崗位面試的朋友們做好準備,以下是本站小編搜索整理的一份Java集合面試問題40個【附答案】,供參考練習,希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!一、Java基礎1、String類為什麼是final的。2、HashMap的源碼,實現原...
-
計算機二級考試Java精選訓練題
下面是應屆畢業生考試網小編搜索整理的計算機二級考試Java精選訓練題,希望對大家有所幫助。[簡答題]本題中,在下畫線上填寫代碼,指定變量b為字節型,變量f為單精度實型,變量l為64位整型。publicclassjaval{publicstaticvoidmain(String[-]args){b=49;f=8.9f;l=0xfedl...