1. 程式人生 > 其它 >面向物件的三大特徵:封裝、繼承和多型的簡單概述

面向物件的三大特徵:封裝、繼承和多型的簡單概述

技術標籤:經驗分享java

一、封裝

封裝其實我們可以按照字面意思理解一下,就是將一些東西包裝起來成為一個整體。比如:電視機,我們只需要連線製造廠商給我們留的介面,用遙控器來操作它就可以了,沒必要去看電視機的內部結構是什麼樣子,這就是封裝。

  • 該露的露,該藏的藏
    1.我們的程式設計要追求“高內聚,低耦合”。高內聚:就是類的內部資料操作細節自己完成,不允許外部干涉;低耦合:僅暴露少量的方法給外部使用。
  • 封裝(資料的隱藏)
    1.通常,應禁止直接訪問一個物件中資料的實際表示,而應通過操作介面來訪問,這稱為資訊隱藏。
  • 對於程式碼方面
    1.我們在定義一個物件的時候:屬性私有用Get/Set就行了
    這裡說一個idea快捷鍵生成Get/Set:Alt+Insert
public class Student {
    private String name;//姓名
    private int id;//學號
    private char sex;//性別
    private int age;//年齡

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }
public void setId(int id) { this.id = id; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { if (age > 120 || age <
0){ this.age = 3; }else{ this.age = age; } } }
public class TestStudent {
    public static void main(String[] args) {
        Student nanyuan = new Student();
        nanyuan.setName("南鳶");
        System.out.println(nanyuan.getName());

        nanyuan.setAge(99);
        System.out.println(nanyuan.getAge());
    }
}

二、繼承

  • 繼承的本質是對某一批類的抽象,從而實現對現實世界更好的建模。

  • extends 的意思是“擴充套件”。子類是父類的擴充套件。

  • JAVA中類只有單繼承,沒有多繼承!(比如一個兒子只有一個親身父親,但是一個父親可以有多個兒子)

  • 繼承是類和類之間的一種關係。除此之外,類和類之間的關係還有以來、組合、聚合等。

  • 繼承關係的倆個類,一個為子類(派生類),一個為父類(基類)。子類繼承父類,使用關鍵字extends來表示。

  • 子類和父類之間,從意義上講應該具有“is a”的關係。

  • Object:在java中,所有的類,都預設直接或者間接繼承Object

  • super – this
    super注意點:

    1. super呼叫父類的構造方法,必須在構造方法的第一個。
    2. super 必須只能出現在子類的方法或者構造方法中!
    3. super 和 this 不能同時呼叫構造方法!

    super VS this
    代表的物件不同:
    this:本身呼叫者這個物件。
    super:代表父類物件的應用。
    前提:
    this:沒有繼承也可以使用。
    super:只能在繼承條件才可以使用。
    構造方法:
    ***this()***:預設呼叫本類的構造。
    ***super()***:呼叫父類的構造。

  • 重寫:需要有繼承關係,子類重寫父類的方法!

    1. 方法名必須相同。
    2. 引數列表必須相同。
    3. 修飾符:範圍可以擴大大不能縮小:public > protected > default > private
    4. 丟擲異常:範圍,可以被縮小,但不能擴大:ClassNotFoundException–> Exception(大)

重寫,子類的方法和父類必須要一致:方法體不同!

三、多型

  • 即同一方法可以根據傳送物件的不同而採用多種不同的行為方式。
  • 一個物件的實際型別是確定的,但可以指向物件的引用的型別有很多。
  • 多型存在的條件
    1. 有繼承關係
    2. 子類重寫父類的方法
    3. 父類引用指向子類的物件。
  • 注意:多型是方法的多型,屬性沒有多型性。
  1. 多型是方法的多型,屬性沒有多型。
  2. 父類和子類,有聯絡,型別轉換異常!ClassCastException!
  3. 存在條件:繼承關係,方法需要重寫,父類引用指向子類物件!Father f1 = new Son();
    (1).static 方法,屬於類,他不屬於例項。
    (2).final 常量
    (3).private 方法
  • instanceof (型別轉換),引用型別,判斷一個物件是什麼型別。