欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

舉例講解Java編程中this關(guān)鍵字與super關(guān)鍵字的用法

 更新時(shí)間:2016年03月23日 08:49:29   作者:全速前行  
這篇文章主要介紹了Java編程中this關(guān)鍵字與super關(guān)鍵字的用法示例,super是this的父輩,在繼承過程中兩個(gè)關(guān)鍵字經(jīng)常被用到,需要的朋友可以參考下

this
總要有個(gè)事物來代表類的當(dāng)前對(duì)象,就像C++中的this指針一樣,Java中的this關(guān)鍵字就是代表當(dāng)前對(duì)象的引用。
它有三個(gè)主要的作用:
1、在構(gòu)造方法中調(diào)用其他構(gòu)造方法。
      比如有一個(gè)Student類,有三個(gè)構(gòu)造函數(shù),某一個(gè)構(gòu)造函數(shù)中調(diào)用另外構(gòu)造函數(shù),就要用到this(),而直接使用Student()是不可以的。
2、返回當(dāng)前對(duì)象的引用。
3、區(qū)分成員變量名和參數(shù)名。
看下面的例子:

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)調(diào)用其他構(gòu)造函數(shù) 
    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(); 
  } 
} 

迷失在茫茫的對(duì)象海洋時(shí),不要忘了用this來找到自我。

super
super是this的父輩。從面相對(duì)象的角度說,這兩個(gè)概念是很好理解的。
子類從父類繼承過來,父類的protected及以上的屬性和方法在子類中是天生就具有的。那么,為什么還要有super這個(gè)關(guān)鍵字?
第一、看父類的構(gòu)造
子類構(gòu)造時(shí)要先調(diào)用父類的默認(rèn)構(gòu)造函數(shù)的,這與C++的構(gòu)造屬性一致。當(dāng)父類有多個(gè)構(gòu)造函數(shù)時(shí),你需要指定調(diào)用哪個(gè)。這是就需要使用super(arg1,arg2...)。
需要注意的是,在子類的構(gòu)造函數(shù)中調(diào)用基類的構(gòu)造函數(shù)時(shí),必須要把super寫作最前面,否則報(bào)錯(cuò)。
第二,在子類覆蓋父類的一些方法中再調(diào)用父類的此方法。大家都知道,在子類中覆蓋父類的一些方法是面向?qū)ο笾卸鄳B(tài)的一種方式,而因?yàn)槠渌N種原因,需要在此方法中調(diào)用父類的此方法,用以區(qū)分,此時(shí)需要使用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(); 
  }  
   
} 

將兩個(gè)類文件放在同一個(gè)目錄,編譯并運(yùn)行:

D:\workspace\Java\project261\super>javac -d . *java 
 
D:\workspace\Java\project261\super>java ClassLeader 

運(yùn)行結(jié)果:

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關(guān)鍵字來完成super相似的功能,C++直接用基類的名字來調(diào)用。

相關(guān)文章

  • Java 高并發(fā)二:多線程基礎(chǔ)詳細(xì)介紹

    Java 高并發(fā)二:多線程基礎(chǔ)詳細(xì)介紹

    本文主要介紹Java 高并發(fā)多線程的知識(shí),這里整理詳細(xì)的資料來解釋線程的知識(shí),有需要的學(xué)習(xí)高并發(fā)的朋友可以參考下
    2016-09-09
  • 詳談jvm線程??臻g內(nèi)存分配位置

    詳談jvm線程??臻g內(nèi)存分配位置

    這篇文章主要介紹了jvm線程??臻g內(nèi)存分配位置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java缺失區(qū)間的查找方法

    Java缺失區(qū)間的查找方法

    在 Java 的算法世界里,有許多有趣又具有挑戰(zhàn)性的問題等待我們?nèi)ヌ剿?今天,跟著小編一起來深入研究缺失區(qū)間的查找秘籍,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2025-02-02
  • 淺析Java中JNI靜態(tài)注冊(cè)和動(dòng)態(tài)注冊(cè)

    淺析Java中JNI靜態(tài)注冊(cè)和動(dòng)態(tài)注冊(cè)

    這篇文章主要為大家詳細(xì)介紹了Java中JNI靜態(tài)注冊(cè)和動(dòng)態(tài)注冊(cè)的相關(guān)知識(shí),文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • Springboot+AOP實(shí)現(xiàn)時(shí)間參數(shù)格式轉(zhuǎn)換

    Springboot+AOP實(shí)現(xiàn)時(shí)間參數(shù)格式轉(zhuǎn)換

    前端傳過來的時(shí)間參數(shù),后端可以自定義時(shí)間格式轉(zhuǎn)化使用,這樣想轉(zhuǎn)成什么就轉(zhuǎn)成什么。本文將利用自定義注解AOP實(shí)現(xiàn)時(shí)間參數(shù)格式轉(zhuǎn)換,感興趣的可以了解一下
    2022-04-04
  • Java開發(fā)之request對(duì)象常用方法整理

    Java開發(fā)之request對(duì)象常用方法整理

    這篇文章主要介紹了 Java開發(fā)之request對(duì)象常用方法整理的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 使用IDEA搭建SSM框架的詳細(xì)教程(spring + springMVC +MyBatis)

    使用IDEA搭建SSM框架的詳細(xì)教程(spring + springMVC +MyBatis)

    這篇文章主要介紹了使用IDEA搭建SSM框架的詳細(xì)教程 spring + springMVC +MyBatis,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 在SpringBoot中配置日志級(jí)別和輸出格式的教程詳解

    在SpringBoot中配置日志級(jí)別和輸出格式的教程詳解

    在開發(fā)一個(gè)應(yīng)用程序時(shí),日志記錄是非常重要的一環(huán),SpringBoot提供了多種日志輸出方式和配置選項(xiàng),本文將介紹如何在SpringBoot應(yīng)用程序中配置日志級(jí)別和輸出格式,需要的朋友可以參考下
    2023-06-06
  • java 數(shù)據(jù)結(jié)構(gòu)并查集詳解

    java 數(shù)據(jù)結(jié)構(gòu)并查集詳解

    并查集是一種用來管理元素分組情況的數(shù)據(jù)結(jié)構(gòu)。并查集可以高效地進(jìn)行如下操作。本文將通過Java實(shí)現(xiàn)并查集,感興趣的小伙伴可以了解一下
    2022-03-03
  • java異常處理的簡(jiǎn)單練習(xí)

    java異常處理的簡(jiǎn)單練習(xí)

    下面小編就為大家?guī)硪黄猨ava異常處理的簡(jiǎn)單練習(xí)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06

最新評(píng)論