程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 舉例講授Java編程中this症結字與super症結字的用法

舉例講授Java編程中this症結字與super症結字的用法

編輯:關於JAVA

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved