static、final、abstract

目錄:

toString()

boolean equals(Object obj)

static

單例類(單個實例)

final

abstract





Object 類的簡單特征

??? 因為一切類都是Object類的子類

第一個重要方法:toString(),它負責把返回該對象的“描述性字符串”。

??? 當你“打印輸出”一個對象時,實際上就是打印輸出該對象的 toString 方法的返回值。

??? Object 類提供的 toString() 方法,返回值就是 類名@hashCode值

???????????? ——所以很多時候,都要重寫 toString() 方法

第二個重要方法:boolean equals(Object obj)

???????????????????????????? 這個方法用于按【程序自己的規(guī)則】判斷兩個對象是否相等。

?????????? ==? 用于判斷兩個【基本類型】的變量(表達式/直接量),它們的值是否相等。

????????????????? A。當比較【基本類型】的值時,程序并不管它的數(shù)據(jù)類型,只比較實際的值的大小。

????????????????? B。如果是【引用類型】的變量(不包括包裝類,因為包裝類可以自動拆箱)

??????????????????????? == 要求被比較兩個【引用變量】,引用同一個實例才會返回 true

重寫equals 方法的標準:

??? 1. 如果當前對象與被比較對象,本省就想同,直接返回 true。

??? 2. 要求當前對象與被比較對象的類型相同,

????????????????????????????????????????????????????? 關鍵屬性值也相同——此時才返回 true

static

????? A。static 只是一個標志。

? ?? ???? 有 static 修飾,表明被修飾的成員屬于類。

? ?? ???? 沒有 static 修飾,表明它是屬于實例的。

????? B。static 成員(Field、方法、初始化塊),與類共存亡

??????????? static 成員,建議總是通過類名來訪問。

??????????????????????????????? 如果見到通過實例的情況,你可以先將實例替換成類名。

????? C。必須先有類,再有對象。

???????????? 有可能出現(xiàn)的情況,JVM 已經(jīng)有類了,依然沒有實例。

???????????? 絕對不可能:JVM 已經(jīng)有了該類的實例,但該類信息依然不存在!

??? 【規(guī)則】:【static 成員】不允許訪問【非 static 成員】!(有static的不能訪問沒有static的,因為類成員(有static的)比實例早出現(xiàn))

????????????????????? 【【靜態(tài)成員】不能訪問【非靜態(tài)成員】】

????????????????????? this引用,super 都不允許出現(xiàn) static 方法中。

????????????????????? 當程序直接訪問一個Field ,實際上前面省略了:

??????????????????????????????? 【如果Field 是實例Field,相當于省略了this】

??????????????????????????????? 【如果Field 是類Field ,相當于省略了類名】

StaticTest? 程序 及 運行結果:

public class StaticTest

{

??? // 定義了一個類Field,它與StaticTest 類本身共存亡

??? static int count = 20;

??? public static void main(String[] args)

??? {

? ?? ?? // 只是定義一個st引用變量

? ?? ?? // 但st并未指向任何有效的對象

? ?? ?? StaticTest st = null;

? ?? ?? // 對于靜態(tài)Field、static方法,我們建議將實例可以直接替換成類名

? ?? ?? System.out.println(st.count); // st 寫成 StaticTest

??? }

}

輸出結果為? 20

StaticEx? 程序 及 運行結果:

public class StaticEx

{

??? int age;

??? // 實例初始化塊,負責對實例Field 進行初始化

??? {

??????? age = 20;

? ?? ?? abc();// 相當于 StaticEx.abc();非靜態(tài)可以訪問靜態(tài)的,

? ? ? ?? ? ? ? ?? //因為abc是static修飾的,屬于類,所以前面省略類名

??? }

??? static

??? {

? ?? ?? abc();// static靜態(tài)初始化塊調用靜態(tài)方法

??????????????????? // age = 12;// 錯誤,age 是非靜態(tài)的,【靜態(tài)成員】不能訪問

????????????????????????????????? //【非靜態(tài)成員】,此時位于靜態(tài)初始化塊中

??? }

??? public void test()

??? {

? ?? ?? System.out.println("age的值是:" + age);// age 相當于 this.age

??? }

??? // 通俗:豬八戒.吃(西瓜),烤(雞翅)? // 烤雞翅前省略了主語,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? // 即豬八戒,可以成this

??? public static void abc()

??? {

? ?? ?? System.out.println("~~static修飾的abc方法~~" );

??? }

}

單例類(單個實例)

????? 在某些時候,我們只允許為某個類創(chuàng)建一個實例。

????? 要實現(xiàn)單例:

??????????????? A。構造器不能暴露。

????????????????????? 否則就可以自由的創(chuàng)建很多個實例。

??????????????? B。暴露一個方法,由該方法來返回實例。

??????????????????? ? 由于程序必須通過該方法來獲取實例,

????????????????????? 所以在調用該方法之前,肯定沒有實例。

????????????????????? 因此只能通過類來調用,所以該方法必須使用 static 修飾

?????????????? C。使用靜態(tài) Field 來“緩存”已有的實例。

???????????????????? 每次在獲取實例之前,先判斷是否已經(jīng)“緩存”過實例。

? ? ? ? ? ? ? ? ? ? 如果沒有緩存過,就創(chuàng)建,否則直接返回“緩存”的實例。

final

???

?????? - 變量:成員變量(類變量和實例變量)和局部變量(方法里局部變量、代碼塊的局部變量)

?????? - 方法

?????? - 類


1.final 修飾變量

??????? — 該變量值只能被賦值一次,不可改變!

A? -? final 修飾成員變量。

??????? Java 成員變量(Field),默認是可以由系統(tǒng)執(zhí)行初始化,程序員可以不指定初始值。

但是,final 修飾的成員變量(Field),【必須由程序員】執(zhí)行初始化

????????????? 原因(反證法):假如讓系統(tǒng)執(zhí)行初始化,變量的值要么是0、0.0、\u0000、false、null。final 又導致這些變量的值不允許被改變,那么這些變量就失去價值了。

????????? A1。如果final修飾實例變量,可以再如下3個地方為final實例變量指定初始值。

?????????????????? 1. 定義時指定初始值。

?????????????????? 2. 初始化塊

?????????????????? 3. 構造器

? ? ? ? 最多只能指定一次初始值

??????? 普通方法不允許為 final 實例變量賦值

????????? A2。如果 final 修飾類變量,可以在如在2個地方為final類變量指定初始值。

? ? ? ? ? ? ? ? ? 1. 定義時指定初始值。

????????????????? 2. 類(靜態(tài))初始化塊。

???????? 最多只能指定一次初始值。

???????? 普通類方法、普通實例方法、普通初始化塊、構造器都不能為 final 類變量賦值。

B? -? final 修飾局部變量。

??????????? Java 的局部變量,默認就【必須由程序員來指定初始值】。

??????????? final 修飾的局部變量之后,只有一個變化:

? ? ? ? ? ? ? ? final 局部變量依然【必須由程序員來指定初始值】

??????????????????????? 但是,一旦指定了初始值之后以后它的值就不能改變了,只能一次賦值!

final 修飾的變量,它會被執(zhí)行”宏替換“

????? ?? final 修飾的變量:1. 聲明時就指定了初始值,而且 2. 初始值在編譯時就可以確定。

??? ~~~~~~~ 那么這個變量就不存在!

? ? ? ? ”宏替換“ —— 就是”查找、替換“

? 補充:? 對于執(zhí)行“宏替換”,變量名應該多個單詞連綴而成

?????????????? 對于字母全部大寫,單詞與單詞之間以下劃線隔開

宏替換 — 例:

public static void main(String[] args)
???????? final String s1 = "今天";

???????? final String s2 = "是";

???????? final String s3 = "周一";

???????? final String s4 = s1 + s2 + s3;

上面程序中定義了幾個變量?? ? 0 個? ? ? 宏替換,直接沒有"今天";"是""周一",直接調用打印

定義了幾個 String 對象?? ? ? ? ? 1 個? ? ? 因為 s1 + s2 + s3為 ”今天是周一“,有字符串的長度,放在緩存中,所以為對象。

Ps:JVM 會把所有用過的對象進行緩存,第二次可以用

例1:

????? String a = "今天是周一";

????? String b = "今天是" + "周一";

????? System.out.println(a == b); //? a、b必須指向同一個對象才相等

上面程序輸出為 true。因為? ? 在編譯時候,編譯器已經(jīng)把”+ 運算“ 計算出來。"今天是周一"已經(jīng)緩存過了,由于” + “ 前后的值都是”直接量“,可以直接計算。

例2:

??????? String a1 = "今天是";

??????? String a2 = "周一";

??????? String a3 = "a1 + a2";

??????? String a4 = "a1 + a2";

上面程序輸出為 false。因為? a1,a2 都是變量,他們的值只有在運行時才能確定下來,a3,a4 的值只能在運行時動態(tài)地確定。因此無法直接用緩存的字符串

2.final方法

??? final 修飾的方法不能被重寫(Override)!

?????????? ? 兩同、兩小、一大

???????????? 兩同:方法名,形參列表相同

???????????? 兩小:子類重寫的方法的返回值類型必須比父類方法的返回值類型更小,或相等

???????????????????????? 子類重寫的方法的聲明拋出的異常必須比父類方法聲明拋出的異常更小,或相等

??????????? 一大:子類重寫的方法的訪問權限必須比父類方法的訪問權限更大,或相等

? ? ? 好處:禁止父類方法被重寫,避免了父類被破壞

????? 注意點:

???????????? A。final 與 private 沒有價值!

?????????????????? private 方法它是不能被重寫的。

?????????????????? 因此再用 final 修飾 private 方法沒有太大的實際意義

3.final 類

??????? final 類不能有子類

??????? final 類比較安全

???????????????? ——? 就是為了更加的安全。由于它沒有子類,它的方法、Field 就可以更好的被保護。

典型的,Java 中包含String、Math、所有包裝類,都是 final 類。


abstract 修飾符

????? 修飾類或方法

????? 抽象類:使用 abstract 修飾的類就是抽象類。

?????????????????? 【有得有失】:??? ? 得:增加了一個功能,可以包含抽象方法。

??????????????????????????????????????? ? ? ? ??? 失:不能創(chuàng)建實例。

????????????????????? 其他的,普通類可以有的,抽象都可以有。??

??? 抽象類的三個注意點:

? ? ? ? ? ? A。【雖然抽象類不能創(chuàng)建實例,但它依然有構造器,

???????????????????? 它的構造器主要是供其子類的構造器調用】

??????????? B。【抽象類完全可以沒有抽象方法】

??????????? C。【抽象類總是不能創(chuàng)建實例的,即使它沒有包含抽象方法】

????? 抽象方法:A。使用 abstract 修飾

??????????????????????? B。沒有方法體(有abstract修飾,后面不能加? {~~此為方法體~~})

?????????????????? 注意點:

??????????????????????? A。【抽象方法不能有方法體,花括號部分{}? 】

??????????????????????? B。【只要在方法后出現(xiàn)花括號,即使花括號中沒有任何代碼,也算有方法體】

??????????????????????? C。【abstract 不能與final 同時出現(xiàn):

???????????????????????????????????? 對于abstract 方法而言,該方法應該由子類重寫,final 不允許被重寫,因此不能同時出現(xiàn)。

???????????????????????????????????? 對于abstract 類而言,該類主要用于派生子類,final 類不允許被繼承,因此不能同時出現(xiàn)】

??????????????????? abstract 與 final 【永遠互斥】!

??????????????????????? D。【abstract 與 static 不能同時修飾方法】

? ? ? ? ? ? ? ? ? ? ? ? E。【abstract 和 private 不能同時修飾方法

???????????????????????????????? 原因:private? 意味著該方法不能被子類訪問

??????????????????????????????????????????? abstract 要求方法必須由子類重寫? 兩者沖突】

抽象類的作用:

????????? 主要是與 ”模板模式” 聯(lián)系在一起的。

????????? 需求場景:? 程序需要實現(xiàn)A方法,但A方法又需要調用B方法,

????????????????????????????? B方法在該類中暫時不知道怎么實現(xiàn)(不同的子類對B方法的實現(xiàn)【不同】)

????????????????????????????? 此時就需要把B方法定義成抽象方法。

?????????? 為抽象類定義子類;

????????????????????? A。子類要么為抽象父類的所有抽象方法提供實現(xiàn)

??????????????????????????? 否則你的子類也只能是抽象類














?

以上


寫在最后:

此刻,我有些明白,她口中的所謂的:我覺得你不是我想要的那種愛情了。不是她變心了,而是我自己一直處于一種病態(tài),總是一味的覺得愛你就要給你最好的,毫無底線,逆來順受,對方說什么就是什么,對方要什么就滿足什么,對方生氣了TA忍,對方需要TA的時候就理TA,不需要TA的時候就像空氣一樣對待。這種情況在于,喜歡多的那一方心態(tài)已經(jīng)失衡,潛意識認為我在乎TA,我不能惹TA生氣,如果TA生氣,那么我們就有分手的危險。殊不知,越是這么卑微,越是這么低下,對方越來不起你,也就越有恃無恐。真正的愛情是建立在雙方平等的基礎上的,兩情相悅才是愛情長久的保障。現(xiàn)實生活中很多人遇到TA說沒感覺了,就以為自己對TA還不夠好,接著就是比以前對TA更好更卑微,結果通常讓對方更厭煩。這個問題的根本原因在于:你的魅力下降到TA難以感興趣的地步。

其實,這個問題她是給我說過的,但是我卻不以為意,或者說,我是誤解了,沒有認識到本質。現(xiàn)在,竟然有些豁然開朗。好在我現(xiàn)在認識到也不遲,雖然她昨晚和我真誠的坦言讓我很難過,她說,她覺得她對我的愛配不上我對她的愛,她覺得她是個壞女孩,哈哈,這個傻瓜,其實并不是她的問題,是我對她的愛陷入了誤區(qū),只是她也不知道這是什么誤區(qū),其實她的內心里還是愛我的,至少她對說出了她的內心想法,她告訴我,如果你不想分手我們就繼續(xù)好著吧,兩個小時之前,我還一直在想,有意義嗎,現(xiàn)在看來,很有意義,她是個傻不列顛的小可耐那,我怎么忍心讓她來承認她是個壞壞的花心姑涼那。但是現(xiàn)在的這些想法,我暫時不打算告訴她,我也早就給她說過,愛情也是需要適當?shù)暮亲o的,現(xiàn)在,我將嘗試用正確的方式來悉心呵護我們的愛情,請你期待吧,當然,不會是很刻意的維護,是建立在彼此都相處的很舒服的基礎上。




最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,738評論 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境,java的開發(fā)工...
    ZaneInTheSun閱讀 2,686評論 0 11
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,836評論 18 139
  • Java基礎筆記(一) 面向對象 [TOC] 1、定義類 其中的修飾符可以是public、final、abstra...
    小小少年Boy閱讀 373評論 0 1
  • 一、基本數(shù)據(jù)類型 注釋 單行注釋:// 區(qū)域注釋:/* */ 文檔注釋:/** */ 數(shù)值 對于byte類型而言...
    龍貓小爺閱讀 4,288評論 0 16