JAVA課程學習

2020-08-10 11:58:06

JAVA課程學習——第五節

1、物件導向和麪向過程

  • ①概念:
  • 程序導向(C語言):在開發程式時,看中的是中間過程,每一個過程步驟都要自己做
  • 物件導向(java、c#、js…):開發程式時不看重具體過程,看重的是完成過程的物件
  • ②優缺點:
  • 程序導向:效能好 / 維護性、擴充套件性差
  • 物件導向:維護性、擴充套件性好 / 效能差;開銷大
  • ③物件導向三大特徵:封裝、繼承、多型

2、類和物件

  • 關係:類是抽象的,概念上的定義,而物件是類的範例

  • ①類:

成員變數(屬性):定義在類下面 下麪方法之外的變數
成員方法(行爲):去掉static關鍵字,就是一個成員方法

  • ②物件:
  • 建立物件類名 物件名=new 類名();
  • 呼叫類的屬性物件名.屬性名
  • 呼叫類的方法物件名.方法名

3、成員變數和區域性變數

  • 區別
  • 定義的位置不同:成員變數定義在類內部方法之外,區域性變數定義在方法內部
  • 作用域不同:成員變數作用在類內部,區域性變數作用在方法之內
  • 預設值不同:成員變數有預設值,區域性變數沒有預設值
  • 記憶體中的位置不同:成員變數儲存在堆裏面,區域性變數儲存在棧裏面
  • 存取修飾符不同:
    (1)成員變數有四種存取修飾符(private、protected、public、預設)
    (2)區域性變數沒有存取修飾符,預設與方法的修飾符相同
  • 成員變數和區域性變數重名:
  • 遵循「就近原則」使用區域性變數的值
  • 區分成員變數和區域性變數:使用this關鍵字
  • this:this代表當前使用或者正在使用的物件,誰通過哪個物件呼叫了方法誰就是this
  • this可以修飾成員變數,方法,構造方法
    ①直接在成員變數名或方法名前jiashangthis
    ②在構造方法中通過」this(形參)「(注意:必須寫在首行)的方式呼叫本類其他構造方法

4、物件導向—封裝
java中通過將數據宣告爲私有的(private),再提供公有的(public)方法(getxx()和setxx())實現對該屬性的操作,以達到目的

  • 構造方法

建立物件的時候,會用到一個特殊的方法:構造方法(構造器)
構造方法:public 構造方法名(形參){ }
注意:
①構造方法沒有返回值
②構造方法必須與當前類名完全一致,包括大小寫
③構造方法可以使用方法過載
④一旦顯式定義了一個構造方法,系統不會再提供一個預設的無參構造方法,需要自己手動新增

構造方法作用:
构造方法作用

構造方法賦值和set方法賦值:
①set方法可以針對單個變數進行更改
②構造方法賦值new物件的同時給屬性賦值,針對多個物件賦值
区别

5、物件導向—繼承

  • 定義:子類繼承父類別,允許子類擁有父類別的屬性和行爲(父類別中私有除外)(共性抽取
  • 關鍵字(extends)public class 子類 extends 父類別()
  • 優缺點:
  • 優點:提高了程式碼的複用性
  • 缺點:由於繼承會有多層的繼承關係,會提高類之間的依賴關係,耦合度變高
  • 注意:①一個子類只能有一個父類別,一個父類別可以有多個子類 ②所有類的基礎類別都是Object

1、繼承中的方法重寫重點

  • 方法重寫:如果父類別中的方法無法滿足子類要求時,子類可以對父類別的方法進行重寫

  • 重寫規則:

  • ①要求子類重寫的方法名、參數列表、返回值型別與父類別完全一致
  • ②子類重寫方法的存取修飾符許可權不能低於父類別方法修飾符許可權
  • ③子類方法和父類別方法必須同爲static或非static

2、方法過載(overload)和方法重寫(override)的區別(重點):

  • ①方法過載必須在同一個類中,方法重寫必須存在繼承關係
  • ②方法過載要求方法名相同、參數列表必須不同和返回值無關
  • ③方法重寫要求子類方法名、參數列表、返回值型別與父類別完全相同

3、super關鍵字
super關鍵字:可以修飾屬性、方法、構造方法

  • ①當子類和父類別的屬性出現重名時,預設會呼叫子類的屬性,可以通過「super.屬性名」的方式,顯式的呼叫父類別宣告的同名屬性
    super和this关键字
  • ②子類重寫父類別方法後,如果子類想再次呼叫父類別被重寫前的方法可以通過"super.方法名"的方式呼叫父類別方法
  • ③super還可以修飾構造方法,通過子類構造方法中使用「super(形參)」來顯式呼叫父類別對應的構造方法

6、物件導向—多型

  • ①多型的前提必須有繼承或者介面的實現
  • ②同一個動作與不同的物件產生不同的行爲
  • ③多型指的是一個物件的多種形態

多型的體現方式

  • ①使用繼承:不同的子類重寫父類別後,體現出來的形式不一樣
  • ②介面的實現也是一種多型

形成多型的必要條件

  • ①繼承:存在子類和父類別的關係
  • ②介面實現:定義一個類實現對應的介面
  • ③重寫:子類重寫了父類別的方法
  • ④過載:呼叫相同的方法名,實現的功能不一樣
  • ⑤子類物件的多型性(重點):父類別的參照指向子類的範例

注意:程式分爲兩種狀態:編譯狀態和執行狀態
例子:Pet p=new Dog(...);
對於多型來說,編譯時看語句的左邊,左邊的變數定義什麼型別就是什麼型別;
執行時,看語句的右邊,右邊變數是真正執行的物件,執行的是子類重寫後的方法

下轉型和上轉型

  • 向上轉型:將子類物件轉換成父類別參照(自動轉換)
  • 向下轉型:將父類別物件轉換成子類參照(強制型別轉換)

转型

final關鍵字
final關鍵字:修飾類、方法、成員變數、區域性變數

  • 修飾類:修飾的類不能被繼承,但是可以繼承別的類
  • 修飾方法:修飾的方法是一個最終方法,不能被重寫
  • 修飾成員變數:修飾的成員變數值不可改變
    (1)成員變數不再有預設值(2)使用final關鍵字必須直接對成員變數進行賦值
  • 修飾區域性變數:修飾的區域性變數值不可改變,一般用來修飾常數

static關鍵字
static關鍵字:修飾成員變數

  • ①修飾的成員變數不再屬於物件,而屬於類本身,可以通過類名.屬性名呼叫
  • ②只要通過static修飾的屬性所在類建立的物件,都可以共用這個屬性
  • ③當其中一個物件對類變數進行修改以後,其他物件的這個類變數也會修改
  • ④類變數隨着類的載入而載入
  • ⑤類變數放在方法區的靜態域當中