舉例講授Java編程中this症結字與super症結字的用法。本站提示廣大學習愛好者:(舉例講授Java編程中this症結字與super症結字的用法)文章只能為提供參考,不一定能成為您想要的結果。以下是舉例講授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. 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這個症結字?
第1、看父類的結構
子類結構時要先挪用父類的默許結構函數的,這與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++直接用基類的名字來挪用。