一、面向對象的程序設計中的兩個重要概念:
1、類:創建的所有 class 都是類,是一個抽象的概念,類中包含了數據(在類中叫屬性或成員變量)與對數據的操作(在類中叫做方法)。例如人是一個類,他有姓名、年齡等數據屬性、好友吃飯、睡覺、娛樂、和工作等動作。
方法:靜態方法(static修飾符)、非靜態方法(無static修飾符)
方法之間的調用關系:
1)、非靜態方法調用靜態方法或者非靜態方法可以直接調用。
2)、靜態方法調用靜態方法可以直接調用。靜態方法調用非靜態方法需要 new 對象,通多對象.方法名來調用。
3)、靜態方法或者非靜態方法都是屬性里面的方法所以都可以先 new 一個對象,然后通過對象.方法名來調用。
【注意】方法不能嵌套,即方法不能定義在另一個方法里面。
2、對象:(又叫作實例,所以生成一個對象的過程就就叫做實例化)是對象的具體的概念。例如人是一個類、那么具體到那個人就是人的對象了。
3、命名約定:
a)類: 首字母大寫,如果一個類名由多個單詞組成,則每個單詞的首字母大寫,中間不使用任何連接符。如果Person、MemberTest
b)方法:首字母小寫,如果一個方法名由多個單詞組成,則第一個單詞全部小寫,從第二個單詞開始,每個單詞首字母大寫。如add、addUser
c)屬性: 命名約定同方法相同。如age、userName
二、面向對象的三大特點:
1、封裝:將數據與方法放在一個類中就構成了封裝。通俗的講是指隱藏對象的屬性和實現細節。
【好處】將變化隔離、便於使用、提高重用性、提高安全性
【封裝的原則】將不需要對外提供的內容都隱藏起來、把屬性都隱藏,提供公共方法對其訪問
2、繼承:使用extends關鍵字后,子類對象擁有父類對象的屬性和方法。
1)提高代碼的復用性。
2)讓類與類之間產生關系,有了這個關系,才有了多態的特性。
3)Java中只支持單繼承,不支持多繼承。
4)Java支持多層繼承。
3、多態:可以理解為事物存在的多種體現形式(父類類型的變量引用指向子類類型的對象)。
1)、體現:父類類型的應用指向自己的子類對象,傳遞參數時、父類的應用可以接收自己的子類對象。
2)、前提:必須使類與類之間的關系,要么繼承要么實現。
3)、好處:多態的出現大大的提高了程序的擴展性。
4)、使用:當使用多態方式調用方法時,會首先檢查父類中是否有對應的方法,如果沒有則編譯錯誤;如果有則會調用子類對應的方法
5)、轉換:
向上類型轉換:將子類型轉換為父類型,不需要加顯示指定。
向下類型轉換:父類型對象的引用指向的是哪個子類型對象,就能轉換為對應的子類型的引用,必須顯示指定(必須使用強制類型轉換)
三、構造方法:構造方法用於完成對象屬性的初始化工作
1、構造方法必須與類名完全一致。
2、構造方法沒有返回值,不可以寫return語句,也不能出現void。
3、如果在一個類中沒有聲明構造方法,那么Java編譯器會自動為類添加一個沒有參數且方法體為空的構造方法(默認的構造方法),如果類中聲明一個帶參數的構造方法,剛Java編譯器不會自動添加默認構造方法
4、一個類中可以有多個構造方法,但參數不能相同
5、不能顯示的調用構造方法,構造方法通過new關鍵字隱式來調用且只調用一次
6、一般在定義了有參構造器的同時再寫一個空的無參構造器。
四、重載和重寫的區別
1、重載:一個類中可以有多個相同的方法名,但參數不相同(參數的個數,參數的類型),這就是重載。
2、重寫:在子類與父類之間,方法一模一樣(方法名、返回類型、參數)
