
final可以用在類、方法、變量上。 1、final用在類上,表明當前類它不能被繼承,沒有子類。
(相關資料圖)
public final class 類名稱 { // ... }
注意:一個類如果是final的,那么其中所有的成員方法都無法進行覆蓋重寫
2、final用在方法上,表明當前方法不能被override,不能被重寫。
修飾符 final 返回值類型 方法名稱(參數列表) {
// 方法體}
注意:對于類、方法來說,abstract關鍵字和final關鍵字不能同時使用,因為矛盾。有抽象方法的abstract類被繼承時,其中的方法必須被子類Override,而final不能被Override。
3、final用在變量上,表明當前變量是一個終態的變量,是一個常量,這個變量的值一但被賦值后就不能被改變了。對于final類型的成員變量的初始化方式: 1、聲明變量時直接賦值
final int X=1;
對于基本類型來說,不可變說的是變量當中的數據不可改變
對于引用類型來說,不可變說的是變量當中的地址值不可改變
2、在構造方法中完成賦值,如果一個類有多個構造方法,就要保證在每個構造方法中都要完成對該final類型變量的初始化工作。
例:
public class FinalOriginalTest {
private final int a;
private String name;
public FinalOriginalTest(){ ?
a = 3;
}
public FinalOriginalTest(String name){ ?
this.name = name;
}
public static void main(String[] args){ ?
FinalOriginalTest ft = new FinalOriginalTest(); ?
FinalOriginalTest ft1 = new FinalOriginalTest("hello");
}}
問題:上面的程序能否編譯通過? 解答:不能編譯通過,可能沒有初始化變量a。因為對于final類型的成員變量的初始化,在構造方法中完成賦值,如果一個類有多個構造方法,就要保證在每個構造方法中都要完成對該final類型變量的初始化工作。所以需要在public FinalOriginalTest(String name)構造方法中給a賦值。
問題:上面的程序中,修正問題1之后,將private final int a;改為private static final int a;能否編譯通過? 解答:不能編譯通過,因為a是靜態變量,在這個類還沒有實例化的時候,它的值就已經有了。所以對于一個int類型的static final類型的變量a來說,我們只能在聲明的時候就給它賦值private static final int a = 3;然后把構造方法里面的賦值給注釋掉,這樣編譯就能通過了。 總結:對于final類型的變量,對于不加static我們可以有兩種方式給它賦值:聲明變量時直接賦值;在構造方法中完成賦值,如果一個類有多個構造方法,就要保證在每個構造方法中都要完成對該final類型變量的初始化工作。對于一個變量既是final又是static的,我們必須在聲明變量時直接賦值。
關鍵詞:
網站首頁 |網站簡介 | 關于我們 | 廣告業務 | 投稿信箱
Copyright © 2000-2020 m.asmrgay2.com All Rights Reserved.
中國網絡消費網 版權所有 未經書面授權 不得復制或建立鏡像
聯系郵箱:920 891 263@qq.com
主站蜘蛛池模板: 精品国产日本| 国产精品免费久久久久久| 久久精品在线视频| www黄色av| 色综合五月天导航| 91国在线高清视频| 久久国产精品久久久久久久久久| 亚洲精品欧美精品| 国产精品成人久久电影| 黄色国产精品一区二区三区| 久久伊人色综合| 欧美综合国产精品久久丁香| 午夜精品久久久久久久无码| 91精品视频在线播放| 久久久精品网站| 免费国产成人看片在线| 日本三级中国三级99人妇网站| 午夜精品久久久久久久无码| 亚洲人精品午夜射精日韩| 综合久久国产| 亚洲欧洲国产精品久久| 午夜精品久久久久久久无码| 一区二区三区不卡在线| 午夜免费日韩视频| 日韩有码在线视频| 日本不卡一区二区三区在线观看| 日韩美女在线观看一区| 日韩美女在线观看一区| 欧美一级片中文字幕| 日韩av资源在线| 欧美激情第6页V| 久久久久久久免费视频| 久久riav| 国产精品亚洲视频在线观看| 精品国产依人香蕉在线精品| 国产欧美久久久久| 久久精品国产成人精品| 国产日本欧美一区二区三区在线| 久久精品久久精品国产大片| 国内自拍欧美激情| 国产精品久久久久7777|