標籤:instance 基本 中繼 對象 抽象類別 ima tostring 運行時 參數
Java 中的instanceof 運算子是用來在運行時指出對象是否是特定類的一個執行個體。instanceof通過返回
一個布爾值來指出,這個對象是否是這個特定類或者是它的子類的一個執行個體。
類的三大特性:封裝、繼承、多態;
封裝:把複雜的邏輯隱藏起來,對外只顯示一個介面。
繼承:子類繼承父類公開的屬性和方法,這樣可以減少代碼量。
多態:一種事物的多種形態。
一.類的繼承
1.繼承的概念
繼承用於描述事物之間的所屬關係,通過整合可以使所有事物之間形成一種關係體系。
通過extends來實現繼承,其中只允許單繼承,也就是說一個類只能有一個父類,可以好多各類共同擁有一個父類,也允許多重繼承。
2.重寫父類方法
(1)重寫與重載
重寫:在子類當中重新定義在父類當中已經存在的方法,且重寫後方法的許可權不能低於父類當中的許可權
重載:在一個類中,有些許方法名相同的方法,但他們參數的個數或者類型不一樣重寫是兩個類,重載一個類
(2)注意
父類當中的private修飾的方法和屬性不會被子類繼承到
3.super關鍵字
(1)概念
當子類重寫了父類方法時,子類無法訪問父類中的方法,於是乎就有了super
(2)作用
用super調用父類的屬性和方法
用super調用父類的構造方法,相當於this。(super和this要寫在構造方法第一行,必須是第一行)
二.final關鍵字
final修飾的類不能被繼承,修飾的方法不能被重寫,修飾的變數為常量不能被更改
三.多態
1.理解
同一個行為具有多個不同表現形式或形態的能力就是多態,人兩條圖走路,貓四條腿走路,蜈蚣n條腿走路這就是多態,多態體現在方法的重寫和重載,重載式多態,也叫編譯時間多態,重寫式多態,也叫運行時多態狗的叫聲是:汪汪汪,而貓的叫聲是:喵喵喵。這就體現了不同動物shout方法的多態
2.物件類型轉換
**抽象類別和介面可以當做向上轉型的引用變數類型
(1)向上轉型
1*概念
通過類型轉換把子物件轉為父類型
如 Animal dog=new Dog();
2*注意
轉型後只能調用子類父類共同具備的屬性和方法,且屬性和方法的值還是子類的。
如有一隻狗叫大黃(DaHuang)他學會了一個本領fly(),並且他還會用兩條腿跑把它進行向上轉型 Dog daHuang=new daHuang();現他不能fly因為父類dog中沒有fly方法,但他依舊叫大黃,並且可以兩條腿走,這些屬性dog類都具備所以都保留了下來。
3*Object類
Object是所有類的父類,他有一個toString()方法,所有對象可直接調用,他用與輸出
對象的基本資料,如對象所屬類的類名、和對象的地址資訊,也可以對toString()
方法重寫,用於放回一些特有資訊
4*意義
減少代碼重複
*******************************有例子***********************************************
(2)向下轉型
通過類型轉換把父物件轉為子類型
1*注意事項
向下轉型的前提是父類對象指向的是子類對象(也就是說,在向下轉型之前,它得先向上轉型)
向下轉型只能轉型為本類對象(貓是不能變成狗的)
2*意義
向上轉型類似於一種模糊化處理,向下轉型則是對模糊化的去除,找迴向上轉型丟失的方法
四.介面
1.抽象類別
(1)定義
定義一個類時通常需要定義一些方法來描述該累的行為特徵,有些時候,這些方法的方式是無法確定的So就誕生了用abstract修飾的抽象類別
(2)特點
允許在定義方法時不寫方法體,不包含方法體的方法為抽象方法,抽象類別中可以有普通的方法也可以同時都包含,也可以不包含抽象方法,抽象類別不能建立對象。
2.介面
(1)定義
如果一個抽象類別中所有方法都是抽象的我們可以用關鍵字interface修飾(而不是class)使其變為一個介面
(2)特點
1*方法全部為抽象方法,所有方法預設用public abstract來修飾,成員變數全部預設用public static final修飾一般不在介面中定義變數
2*由於介面中全部為抽象方法所有介面不能建立執行個體化對象,需要重新定義一個類並用implements關鍵字來實現介面中的所有方法。
3*介面可以通過extends去繼承另一個介面
4*若一個抽象類別實現某個介面只要實現介面中的部分方法就行,普通類需全部實現
5*一個類可以implements多個介面,但只能extends一個類
6*一個類可同時實現繼承和實現介面但extends必須在implements前面
(3)抽象類別和介面的理解
1*介面是對行為的抽象
2*抽象類別生來就是被繼承的
3*java中類是現實生活中具體事物的映射,所以抽象類別是對一種事物的抽象,包括屬性和方法,即對類抽象而介面卻是對類局部進行的抽象即對行為的抽象,在java中繼承是一個 "是不是"的關係,而 介面 的實現則是 "有沒有"的關係。如果一個類繼承了某個抽象類別,則子類必定是抽象類別的種類,而介面實現則是有沒有、具備不具備的關係
4*抽象類別作為很多子類的父類,可以把它認為是一種模板。而介面可以認為是一種行為規範
5*對於抽象類別,如果需要添加新的方法,可以直接在抽象類別中添加具體的實現,子類可以不進行變更;而對於介面則不行,如果介面進行了變更,則所有實現這個介面的類都必須進行相應的改動。
3.匿名內部類
未完待續
五.異常
六.包的定義與使用
Java物件導向(下)