舉例講授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++直接用基類的名字來挪用。