面向對象基礎3

                                           

繼承中的成員屬性

       在子類中如果有與父類中重名的成員屬性,那麼在子類中使用時默認是子類中的屬性

              如果想要調用父類中的成員屬性需要使用super.

繼承中的成員方法**

重寫(覆蓋):在子類中有一個與父類同名的方法(返回值類型,參數列表一樣。)

                         這是無們就說子類中重寫了父類的方法。

 

              重寫目的:

                     子類可以對父類中的方法進行功能擴展.

              重寫的注意事項:1.重寫的方法不能使用比被重寫的方法更嚴格的修飾符

                             2.靜態只能重寫靜態.

final關鍵字

              final可以修飾

              屬性  ------>代表這個屬性是常量

              方法  ------>不可以被重寫

                --------->不可以被繼承  

                                   String類是字符串類,這個類是一個很典型的final

 

              如果一個變量是用final修飾的,那麼這個變量名全都大寫.

 

              如果當前變量是用final修飾的,並且沒有初始化值,那麼我們可以在構造方法中

              對其進行一次賦值操作。

抽象類         abstract只能修飾類 方法.

什麼是抽象類?當前類如果使用abstract修飾的那麼這個類就是抽象類。

抽象類的特點:

                     1.抽象類不可以實例化不能new

                     2.抽象類是用來被繼承的。

                     3.抽象類中可以包含抽象方法.抽象方法是用abstract修飾的方法.

                       抽象方法是用來被重寫的。

抽象方法的格式:

                            修飾符 abstract方法的返回值類型方法名(參數);

                     如果父類中包含抽象方法,那麼子類必須將父類中所有抽象方法重寫。 

抽象類的細節

                     1.如果父類是抽象類,子類是普通類那麼子類必須重寫父類中的抽象方法。

                     2.如果父類是抽象類,子類是抽象類 子類可以選擇是否重寫。

                     3.父類是普通類,子類是抽象類。這種情況也可以。

                     4.抽象類中可不可以沒有抽象方法。可以接口時會說爲什麼?

                     5.普通類中可不可以有抽象方法。不可以

                     6.抽象類中有沒有構造? 幫助子類實例化.

 

                     7.關於abstract是否可以與static  final一起使用.

 

                            staticabstract不可以  static修飾的方法可以通過類名調用。

                            finalabstract不可以 這兩個是完全相反的操作。

                            privateabstract不可以 因爲private私有化了,就不能被繼承了。

多態             多種形態狀態

              定義:某一類事物的多種存在形態。同一種行爲表現出不同的狀態

              多態的兩種基本表現形式 重寫與重載.

              最常見的一種多態:父類引用指向子類對象

 

              多態的好處:1.前期:提高代碼的複用性,可擴展性.

                            2.後期:提高了代碼的可維護性.

 

              多態的弊端:只能調用在父類中聲明的行爲或屬性而子類中特有的行爲或屬性調用不了。

              多態前提:1.必須存在繼承關係.

                       2.必須有重寫。

父類引用指向子類對象在開發中最常見的多態*************

                     父類引用=new子類();

                            調用實例方法

                            前提:查看父類中是否存在該方法

                            調用:調用的是子類中的重寫的方法。

                     調用實例屬性:

                            前提:父類中是否存在屬性

                            調用:父類中的屬性。                  

                     類屬性:

                            前提:查看父類中是否存在該屬性

                            調用:調用的是父類中的類屬性

                     類方法:

                            前提:查看父類中是否存在該屬性

                            調用:調用的是父類中的類方法

              關於對象向上向下轉型

                     向上轉型父類引用指向子類對象 自動轉換               

                     向下轉型:將父類的引用強制轉換成子類的引用。強制轉換

爲什麼向上轉型:它提高了代碼的擴展性與可維護性。

爲什麼向下轉型: 因爲要調用子類中特有的行爲。

向下轉型注意事項:

                     1.必須存在繼承關係.

                     2.需要使用 instanceof進行判斷。它只能操作有關係的引用與類.

 

                            instanceof是一個關係運算符它的使用方式

 

                            引用(對象) instanceof類作用:判斷引用所指向的對象的真實類型是否是類的類類型

 

                            "abc"instanceof String

 

                            如果想要通過instanceof去判斷當前引用所指向是否是父類型或子類型,這個是判斷不了的,

                            必須使用類文件操作。

 

                            Father f=new Son();

 

                            System.out.println(finstanceof Father); //true

                            System.out.println(finstanceof Son);//true

 

                            f.getClass();//得到f引用指向的對象的.class文件

                            Father.class  //得到Father類的.class文件

                           

                            java.lang.ClassCastException:Son1 cannot be cast to Son

 

       示例

              1.計算操作多態的實現 工廠模式

              2.模板方法模式(悍馬)

                                         解決的問題:在開發中我們在執行某些操作時它們是有固定順序。

                                但是它們的具體的方法的實現不同。

                     步驟:

                            1.在類中聲明具體的執行方法。abstract

                            2.在類聲明一個方法它是依次調用具體的方法的。

                            3.創建子類去實現具體的方法。

                     模板好處:

                            1.提高的代碼的安全性2.在父類中可以進行更加方便的控制。3.策略模式(PCI  錦囊妙計)

       解決的問題:當我們使用某個事物時,這個事物不確定,我們可以創建一個平臺去執行這個事物,在傳遞時可能是這個事物或這個事物的子類。

       好處:提高代碼的複用性,靈活性。減少代碼耦合.

 

 

                                               

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章