一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java關鍵字詳解之final static this super的用法

Java關鍵字詳解之final static this super的用法

2022-01-26 12:44寧海沒有七號公園 Java教程

this用來調用目前類自身的成員變量,super多用來調用父類的成員,final多用來定義常量用的,static定義靜態變量方法用的,靜態變量方法只能被類本身調用,下文將詳細介紹,需要的朋友可以參考下

final,static,this,super 關鍵字總結

正文開始@Assassin

 

1. final 關鍵字:

final 關鍵字,意思是最終的、不可改變的,初始化之后就不能再次修改 ,用來修飾類、方法和變量,具有以下特點:

  • final 修飾的類不能被繼承,final類中的所有成員方法都會被隱式的指定為 final 方法;
  • final 修飾的方法不能被重寫;
  • final 修飾的變量是常量,如果是基本數據類型的變量,則其數值一旦在初始化之后便不能更改;如果是引用類型的變量,則在對其初始化之后便不能讓其指向另一個對象;

final的使用場景:使用 final 方法的原因有兩個。第一個原因是把方法鎖定,以防任何繼承類修改它的含義;第二個原因是效率。在早期的 Java 實現版本中,會將 final 方法轉為內嵌調用。但是如果方法過于龐大,可能看不到內嵌調用帶來的任何性能提升(現在的 Java 版本已經不需要使用 final 方法進行這些優化了)。類中所有的 private 方法都隱式地指定為 final。

 

2. static 關鍵字:

static 關鍵字主要有以下四種使用場景:

  • 修飾成員變量和成員方法: 被static 修飾的成員屬于類,不屬于單個這個類的某個對象,也就是說被類中所有對象共享,可以并且建議通過類名調用(創建對象來調用也不報錯,不建議 )。被static聲明的成員變量屬于靜態成員變量,靜態變量 存放在 Java 內存區域的方法區。調用格式:類名.靜態變量名類名.靜態方法名()
  • 靜態代碼塊: 靜態代碼塊定義在類中方法外, 靜態代碼塊在非靜態代碼塊之前執行(靜態代碼塊―>非靜態代碼塊―>構造方法)。 該類不管創建多少對象,靜態代碼塊只執行一次;
  • 靜態內部類(static 修飾類的話只能修飾內部類): 靜態內部類與非靜態內部類之間存在一個最大的區別: 非靜態內部類在編譯完成之后會隱含地保存著一個引用,該引用是指向創建它的外圍類,但是靜態內部類卻沒有。沒有這個引用就意味著:1. 它的創建是不需要依賴外圍類的創建。2. 它不能使用任何外圍類的非 static 成員變量和方法。
  • 靜態導包(用來導入類中的靜態資源,1.5 之后的新特性): 格式為:importstatic 這兩個關鍵字連用可以指定導入某個類中的指定靜態資源,并且不需要使用類名調用類中靜態成員,可以直接使用類中靜態成員變量和成員方法。

 

3. this 關鍵字:

this 是自身的一個對象的引用,可以簡單地理解為代表對象本身,(本質上this是一個變量,存儲的是當前對象的地址)。站在內存的角度,也就是說:this是指向對象本身的一個指針。

this 的用法在 Java 中大體可以分為3種:

  • 普通的直接引用

this是當前對象的一個引用,相當于是指向當前對象本身。

  • 形參與成員名字重名,用 this 來區分:
class Person {
  private int age = 10;
  public Person(){
  System.out.println("初始化年齡:"+age);
}
  public int getAge(int age){
      this.age = age;
      return this.age;
  }
}

public class TestDemo {
  public static void main(String[] args) {
      Person assassin = new Person();
      System.out.println("assassin's age is " + assassin .getAge(12));
  }
}

運行結果:

Java關鍵字詳解之final static this super的用法

Java關鍵字詳解之final static this super的用法

可以看到,這里 age 是 getAge 成員方法的形參,this.age 是 Person 類的成員變量。

  • 引用構造函數

下面與super一起講,thissuper很像,都是對象的引用;

 

4. super 關鍵字:

super可以理解為是指向自己父(超/基)類對象的一個指針,指向的是離自己最近的一個父類。

super 也有三種用法:

  • 普通的直接引用

this 類似,super 相當于是指向當前對象的父類,這樣就可以用 super.xxx 來引用父類的成員。

  • 子類中的成員變量或方法與父類中的成員變量或方法同名

實例:

package com.test;

class Country {
  String name;
  void value() {
      name = "China";
  }
}
class City extends Country {
  String name;
  void value() {
      name = "Shanghai";
      super.value();      //調用父類的方法
      System.out.println(name);
      System.out.println(super.name);
  }
  public static void main(String[] args) {
      City c=new City();
      c.value();
  }
}

運行結果:

Java關鍵字詳解之final static this super的用法

Java關鍵字詳解之final static this super的用法

可以看到,這里既調用了父類的方法,也調用了父類的變量。若不調用父類方法 value(),只調用父類變量 name 的話,則父類 name 值為默認值 null

  • 引用構造函數

super(參數):調用父類中的某一個構造函數(應該為構造函數中的第一條語句)。
this(參數):調用本類中另一種形式的構造函數(應該為構造函數中的第一條語句)。

使用 this 和 super 要注意的問題:

  • 在構造器中使用 super() 調用父類中的其他構造方法時,該語句必須處于構造器的首行,否則編譯器會報錯。另外,this 調用本類中的其他構造方法時,也要放在首行。-thissuper不能用在static方法中。

簡單解釋一下:

static 修飾的成員屬于類,不屬于單個這個類的某個對象,被類中所有對象共享。而 this 代表對本類對象的引用,指向本類對象;而 super 代表對父類對象的引用,指向父類對象;所以, thissuper 是屬于對象范疇的東西,而靜態方法是屬于類范疇的東西。

到此這篇關于Java關鍵字詳解之final static this super的用法的文章就介紹到這了,更多相關Java final 用法 內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/b_ingram/article/details/120588567?spm=1001.2014.3001.5501

延伸 · 閱讀

精彩推薦
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
主站蜘蛛池模板: h黑寡妇一级毛片 | 亚洲国产精品久久精品怡红院 | 精品四虎 | 狠狠涩 | 无码国产成人午夜在线观看不卡 | 双性受合不垅腿攻np | 国产实拍会所女技师在线 | 99久久中文字幕伊人 | 香蕉久久高清国产精品免费 | bban女同系列022在线观看 | 五月婷婷在线观看 | 操操综合网| 亚洲精品黄色 | 亚洲spank男男实践网站 | 免费在线观看网址入口 | 日韩一级生活片 | 国产亚洲人成网站天堂岛 | bl双性小说 | 精品午夜中文字幕熟女人妻在线 | 亚洲免费精品 | 满溢游泳池免费 | 91tv在线 | 四虎最新永久免费视频 | 免费观看二十女人一摸是水 | 欧美成人日韩 | 欧美三茎同入 | 日本一区二区在线不卡 | 欧美x×x| 欧美女人p | 色婷婷在线播放 | 精品国产香蕉 | 午夜理论片YY4399影院 | 国产自拍专区 | 免费在线观看成年人视频 | 99精品热线在线观看免费视频 | 亚洲好视频 | 久久亚洲网站 | 国产福利资源网在线观看 | 国产视频久久 | 91成| 日韩一级片在线免费观看 |