1. 程式人生 > >Java基礎-面向物件-簡單總結(2)

Java基礎-面向物件-簡單總結(2)

面向物件:

    Java是一種面向物件的語言,優點:1,系統結構穩定。2.子系統相對獨立。3.軟體可重用性,可維護性和可拓展性強。

    面向物件的三大特徵:封裝,繼承,多型。

    物件:描述客觀事物的實體。

    類:具有相同屬性物件的集合。類中定義了物件將會有的屬性(特徵)和方法(行為)。

引數:

    形參:建立方法時定義的引數,叫形式引數。

    實參:呼叫方法時傳入的引數,叫實際引數。

方法過載:

    在一個類中定義多個重名的方法,但每個方法具有不同的引數型別或引數個數。構造方法也可以過載(同類.同名.不同參)

    優點:根據引數的不同,採用不同的實現方法,簡化了類呼叫方法的程式碼。

作用域:

    全域性變數(成員變數):在類中定義,全域性呼叫,系統預設賦初始值。

    區域性變數:在方法中定義,方法外不可呼叫,無初始值,賦值後使用。

構造方法:

    每個類有一個預設無參構造方法,手工新增有參構造方法後,預設無參構造方法被覆蓋,如果想使用無參構造,必須將無參構造寫到類中。

封裝:

    將類的資訊隱藏在類內部,不允許外部程式直接訪問,可以通過該類提供的方法實現對隱藏資訊的訪問和操作。

    封裝兩大原則:1.把儘可能多的東西藏起來,對外提供便捷的介面。2.把所有的屬性藏起來。

    實現封裝:1.修改屬性的可見性:private 資料型別 變數名。

                    2.建立公有的get/set方法:用於屬性的讀寫。

                    3.在get/set方法中加入屬性流控制語句:對屬性值的合理性進行判斷。

    封裝的優點:1.使用者正確使用系統,防止錯誤修改屬性。

                       2.有助於系統間的鬆耦合,提高系統獨立性。

                       3.提高軟體可重用性。

                       4.降低了構建大型系統的風險。

包:

    package,Java原始檔中第一條非註釋語句,一個原始檔只能有一個包宣告語句。

    命名規範:小寫字母組成,不能以圓點開頭或結尾

類的訪問修飾符:

    修飾符\作用域    同一包中    非同一包中

    public                可用            可用

    預設修飾符         可用            不可用 

類成員的訪問修飾符:

    修飾符\作用域    同一類中    同一包中    子類中    其他

    private                可用         不可用       不可用    不可用

    預設修飾符          可用           可用         不可用    不可用

    protected            可用          可用           可用      不可用

    public                  可用          可用          可用        可用

static:

    常用場景:定義使用final關鍵字修飾的常量,例:static final int PERSON_LIVE=1;

    用static修飾的屬性稱為靜態變數或者類變數,未使用static修飾的屬性成為例項變數。

    用static修飾的方法稱為靜態方法或者類方法,未使用static修飾的方法成為例項方法,方法中不能使用this和super。

    static修飾的屬性和方法使用型別打點可直接呼叫“類名.”。

繼承:

    將子類共有的屬性提取到父類中。

    使用 extends 建立繼承關係。單根繼承:一個類只能有一個直接父類,但可以有多個間接父類。

    子類通過super呼叫父類屬性,方法,構造方法。

例項化子類物件:

    子類在例項化時,會先執行父類的構造方法,然後執行子類的構造方法。

    父類引用可指向子類物件。例:Pet pet=new Dog();Dog為Pet子類。

    Object類是所有類的父類。

方法重寫:

    重寫方法和被重寫方法必須具有相同的方法名。

    重寫方法和被重寫方法必須具有相同的引數列表。

    重寫方法的返回值型別必須和被重寫方法的返回值型別相同,或是其子類。

    重寫方法不能縮小被重寫方法的訪問許可權。

    構造方法不能被重寫。

    (同名,同參,不同類,同返回值或是其子類,訪問許可權不能嚴於父類)

多型:

    方法重寫是實現多型的基礎。

    向上轉型:子類轉父類直接轉換。

    向下轉型:父類轉子類需要進行強制型別轉換。

    instanceof:進行型別的判斷。判斷一個物件是否屬於一個類。

    多型的優勢:可替換性,可擴充性,介面性,靈活性,簡化性。

    多型的應用:使用父類作為方法的形參,作為方法的返回值。

抽象類:abstract

    抽象類不能被例項化。

    子類如果不是抽象類,就必須重寫父抽象類中的所有抽象方法。

    abstract不能和final一起使用。

    private不能修飾抽象方法。

    沒有抽象構造方法,也沒有抽象靜態方法。

    抽象類可以沒有抽象方法,但抽象方法必須定義在抽象類中。

    抽象類中可以有非抽象的構造方法,供子類呼叫。

    定義抽象類:public abstract class 類名{ }

    定義抽象方法:訪問修飾符 abstract 返回值型別 方法名(引數列表);

介面:interface

    介面可以說是一種能力,所以一般講功能放到介面中。

    public interface 介面名,實現介面:implements

    介面中全是公共的抽象方法(public abstract),變數為全域性靜態常量(public static final)。

    介面不可被例項化。一個介面不能實現另一個介面,但可以繼承多個介面。

    實現類必須實現介面的所有方法。

    實現類可實現多個介面。

    面向介面程式設計:關心實現類有何能力,不關心實現細節。關心面向介面的約定而不考慮介面的具體實現。

抽象類和介面:

    相同點:1.代表系統的抽象層。

                 2.都不能被例項化。

                 3.都能包含抽象方法。

    不同點:1.抽象類中可以有非抽象方法,介面中只能有抽象方法。

                 2.一個類只能有一個直接父類,但可以實現多個介面,中間用逗號隔開。

                 3.已存在的繼承樹,可以方便的抽取介面,但是抽取抽象類不容易。

    使用原則:1.介面做系統與外界互動的視窗。

                    2.介面一旦制定,就不允許隨便更改。

                    3.抽象類可完成部分功能的實現和部分功能的拓展。

異常:

    關鍵字:try,catch,finally,throw,throws。

    Java異常體系結構:所有異常型別都是Throwable類,派生兩個子類:Error類(僅靠程式本身無法恢復的嚴重錯誤)和Exception類(由Java應用程式丟擲和處理的非嚴重錯誤)。

    常見的異常類:

    Exception:異常層次的根類。

    ArithmeticException:算數錯誤異常。

    ArrayIndexOutOfBoundsException:陣列下標越界。

    NullPointerException:空指標異常,嘗試訪問未建立物件。

    ClassNotFoundException:不能載入所需要的類。

    InputMismatchException:想得到的資料型別和實際輸入的資料型別不匹配。

    IllegalArgumentException:方法接收到非法引數。

    ClassCastException:物件強制型別轉換出錯。

    NumberFormatException:數字格式轉換異常,如把“abc”轉換成數字。

    try-catch-finally結構中try必須存在,其他兩者必須存在一個。

    System.exit(1);強制退出Java虛擬機器。

    多重catch處理異常時catch語句塊的排序必須是從子類到父類。

    throws:用於宣告該方法內丟擲了異常,可繼續宣告,最後由Java虛擬機器處理。位於方法引數列表後。可宣告多個異常。

    throw:用於程式設計師自行產生並丟擲異常。位於方法內部。丟擲一個異常物件且只能是一個。

自定義異常:

    public class 自定義異常名 extends Exception{ }