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中嵌入式MySQL的使用方法介紹
這篇檔案主要介紹在Java中嵌入式MySQL的使用,對於一些的應用專案,提供安裝版的Mysql,Oracle是必須的工作。但是有時候如果是一個小的工具,可安裝或者移植性比較強的小軟體。再去安裝資料庫可能就比較麻煩了。其實MySQL也有嵌入式的,不需要安裝,在使用的過程中,會自動...
-
Java中如何獲取Spring中配置的bean
Spring是一個分層的JavaSE/EEfull-stack(一站式)輕量級開源框架。在Java中如何獲取Spring中配置的'bean?下面本站小編帶大家一起來看看詳細操作,希望對大家有所幫助!想了解更多相關資訊請持續關注我們應屆畢業生考試網!一、什麼是Spring?Spring是一個輕量級的控...
-
新手如何學習Java
Java作為一門高階程式語言在資訊科技時代有著廣泛的應用。新手如何學習Java呢?下面小編來給大家介紹Java的學習方法,希望對大家有幫助!1理解Java思想Java是一門面向物件程式語言。向物件程式設計是Java最核心的思想,這也是區分和C等其他程式語言的一個顯著特徵。掌握...
-
講述java中enum的用法
本文例項講述了java中enum的用法。分享給大家供大家參考。具體分析如下:1.基本用法複製程式碼程式碼如下:enumDay{SUNDAY,MONDAY,TUESDAY,WENDSDAY,THURSDAY,FRIDAY,SATURDAY;}列舉是常量,所以應該用大寫。2.列舉是物件列舉隱含地繼承了,所以它具有的.屬性和方法。遍...