農林漁牧網

您現在的位置是:首頁 > 林業

程式猿常說的幾個概念,剽一遍你也能懂

2023-01-03由 霧裡看花最是迷人 發表于 林業

私有屬性可以被繼承嗎

一些基本概念,每個概念均使用現實世界的例子來說明,重在理解概念,所以並沒有程式碼。

程式猿常說的幾個概念,剽一遍你也能懂

程式猿

類和物件:

俗話說“物以類聚”,具有某些共同特徵的一個抽象的總稱,舉一個簡單的例子:你剛誕生在地球上被稱作嬰兒,那麼嬰兒到底是什麼?能說清嗎,恐怕只能描述它的一些特徵和動作吧,這裡的嬰兒就相當於一個類,一個抽象的名字,只能描述它擁有的特徵和動作,卻不能說清到底什麼是嬰兒,(這些特徵和動作就成了這個類的成員變數和成員函式)。物件呢?在前面也闡述了,對,就是你,你誕生後,會由父母給予名字,此時你仍舊是嬰兒,但是卻變得具體了,因為有了名字和生存空間。就像程式碼中 Baby lili = new Baby(); Baby是嬰兒這個類,父母透過“new Baby()”(父母創造你的方法),使他們心中抽象的嬰兒變得具體化了,並且給予你一個名字叫lili,此時你就是這個嬰兒類的一個物件,別人可以透過你來進行具體的操作。

封裝:

把類中的屬性和方法隱藏起來,只有在本類中才可以得到和進行處理,但同時又為外界提供訪問這些屬性的方法,外界必須透過給的這些方法才可以拿到本類的屬性(即資料)。就好比父母銀行卡的密碼你並不知道,但是你每個月卻能夠從父母那裡拿到錢,但是能不能拿到其實是由父母決定的,因為是父母給你提供了拿錢的途徑(父母提供的方法用於讓你訪問自己的私有屬性)

繼承:

使用關鍵字extends表示子類繼承父類。可以理解為現實世界中的親人之間的那種繼承關係,父母被稱作父類,而你是子類,你可以繼承父母的東西(房子、車子),這些便是父類中的公共屬性(public、protected),你可以得到,而且可以選擇是否要父母這些東西,以及怎麼使用,即可以擴充套件從父類繼承的東西。但是有些卻又不能繼承到,比如說父親的手臂上有道傷口,這個你就繼承不了,因為是父親的私有屬性(privte),僅限父親擁有。一個類只能繼承一個父類,就像一個人只能有一個親生父親一樣

對於抽象類的繼承:

只要類中含有抽象方法(抽象方法沒有方法體,因為是抽象,所以沒有具體的操作方法),那麼這個類便是抽象類,關鍵字是abstract。在這種繼承關係中,子類繼承父類時,必須重寫父類的抽象方法。可以這麼來理解:abstract相當於醫院判定的家族傳染病的標籤,一旦貼上了這個標籤,那麼只要你是這個家族的子類成員,那麼你必定會從一出生就帶有這個病

不能被繼承的類:

使用final定義後的類不能被繼承,也就是不能成為父類。類比現實中:在古代,不能成為父親的男人是什麼人?被final定義後就相當於被打上了太監的標籤,而太監是沒有後代的,所以就不存在父與子的繼承之說

介面:

使用interface關鍵字定義的“特殊類”,接口裡面全是由全域性常量和公共的抽象方法組成,介面的存在就是為了被“繼承”。類比到現實世界中,比如說工作:沒有具體的職位,根本無法描述工作的相關資訊,所有就需要有人來實現一個具體的職位,比如醫生、教師,這樣一來,所謂的工作也就變得明確了。這裡的工作就相當於一個介面,裡面有一堆公眾的心聲“工作苦、工作累、為了工作起得比雞早,睡得比狗晚”(全域性變數和公共方法),使用關鍵字implements實現了工作這個介面後,便可以使工作變得具體化,可以體會到工作中公眾的心聲的同時,還可以有自己的對工作的具體闡述,即可以獲得這些全域性變數和公共方法,同時還能夠擴充套件自己的變數和方法

異常:

異常是JVM生成的物件,異常可以簡單分為兩類:可捕捉的異常和不可捕捉的異常(可捕捉異常一般在編寫程式碼時,編碼工具會自動提醒;不可捕捉異常只有在異常發生後才知道),在編寫程式碼時,可以對可能會發生異常的程式碼進行捕捉,即try{ 可能會出現異常的程式碼 } catch{ 出現異常後執行的程式碼 } finally{ 不管出不出異常,都會執行的程式碼 }。類比到生活中,可捕捉異常如:你第一次騎腳踏車,父母知道如果不管你,你肯定會摔跤,所以在你開始騎的時候就在旁邊扶著確保你不會真的摔下來。不可捕捉異常如:你已經18歲了,父母對你已經很放心了,卻沒想到你走在路上自己把自己給絆了個跟頭,這些只有發生了父母才會知道:原來你這麼大了走路也會被自己絆摔跤