1. 程式人生 > >封裝 、繼承、多型、組合、聚合

封裝 、繼承、多型、組合、聚合

封裝

封裝就是隱藏物件的屬性和實現細節,暴露出外部訪問的介面,控制在程式中屬性的讀取和修改的訪問級別。

通過訪問修飾符控制(private、public,protected,default)

private:當前物件方法以及內部類、匿名類訪問。

public:所有物件以及包括外部程式訪問。

protected:和private一樣 ,當前物件方法以及內部類、匿名類訪問。不同點就是,通過繼承的子類可以訪問。

default:如果不寫修飾符,就是預設的包級別,當前包裡面的類可以訪問。

隱藏實現細節,怎麼隱藏,天天掛著嘴邊的面向介面程式設計怎麼面向介面、什麼高內聚、低耦合。
隱藏:通過類包裝資料和行為,隱藏的部分一般都是比較脆弱的,需要優化或者重構的,如果暴露出來就會很容易出bug。
我們常見的服務端程式暴露API給客服端,(高內聚,自己能做的事,都自己做)服務端能做的事情自己做,不要把服務端的資訊暴露給客服端,如果客服端依賴服務端,伺服器端改了,客服端也要做相應的修改。
面向介面程式設計好處,定義介面規範,不管實現類內部如何重構、優化,只要不改變方法的行為,都不會影響客服端。

繼承

is-a 是Ta 、is-like-a 像Ta的區別

說的白話一點就是is-a 就是重寫父類的方法,is-like-a 重寫父類的方法,並且有自己的方法

is-a

is-like-a

is-like-a

 public abstract class AbstractBird {

    protected String color;
    protected String name;

    public AbstractBird(String color, String name) {
        this.color = color;
        this.name = name;
    }

    public
void show() { System.out.println("看那是" + this.name + ":顏色是" + this.color); drinking(); goWalk(); sleep(); } public abstract void goWalk(); public abstract void sleep(); public abstract void drinking(); } public class Zoo { private AbstractBird abstractBird; public
Zoo(AbstractBird abstractBird) { this.abstractBird = abstractBird; } public void show() { //向上轉型 is-a this.abstractBird.drinking(); //向下轉型 is-like-a Magpie magpie = (Magpie) abstractBird; magpie.singing(); } }

多型

多型分兩種:
(1) 編譯時多型(設計時多型):方法過載。
(2) 執行時多型:JAVA執行時系統根據呼叫該方法的例項的型別來決定選擇呼叫哪個方法則被稱為執行時多型。(我們一般說的都是執行時多型,所以多型主要也是指執行時多型)
第一種實現多型,RTTI(Run-Time Type Identification),通過執行時型別資訊程式能夠使用基類的指標或引用來檢查這些指標或引用所指的物件的實際派生型別。
第二種就是我們用的發射實現

在古代中國神話傳說中,龍生有九子,九子不成龍,各有所好。
money (100元,50元,20元,10元,5元,1元) 每張都形狀,圖案,大小,顏色都體現不一樣。
這裡寫圖片描述

組合

組合是一種強依賴
例如:房子和臥室,如果房子沒有了,臥室也沒有了.

class Room{
    public Room createRoom(){
        return new Room();
    }
}
class House{
    private Room room;
    public House(){
        room = new Room();
    }

    public void createRoom(){
        room.createRoom();
    }
}

聚合

例如:人擁有電腦,就是一種擁有關係

class Computer{
    public void typeWriting(){
        System.out.println("打字");
    }
}

class Person{
    private Computer cp ;
    public Person(Computer cp){
        this.cp = cp;
    }
    //用電腦打字
    public void play(){
        cp.typeWriting();
    }
}

相關推薦

再談面向物件中的封裝繼承

封裝 封裝說的是把資料封裝起來,對外暴露一個可以訪問的介面,不能讓外界直接訪問內部的資料。 從上面的描述可以抽取出兩種型別:介面和類。 從現在比較火的微服務的觀點上來看,一個類就是一個服務,一個物件就是一個服務的例項,通過這個服務暴露的介面來訪問這個服務。從這個意義上來講,面向

C#入門基礎08(封裝繼承)

一、封裝 C#中可使用類來達到資料封裝的效果,這樣可以使資料與方法封裝成單一元素,以便於通過方法存取資料。除此之外,還可以控制資料的存取方式。 在面向物件程式設計中,大多數都是以類作為資料封裝的基本單位。類將資料和操作資料的方法結合成一個單位。設計類時,不希望直接存取類中的資料,而是希

java初學 面向物件二 static關鍵字 封裝繼承

static關鍵字 1:如果沒有static會怎樣? 1:定義Person類 1:姓名、年齡、國籍,說話行為 2:多個構造,過載形式體現 2:中國人的國籍都是確定的 1:國籍可以進行顯示初始化 class Person {

Java之路:類的封裝繼承

面向物件有三大特點:封裝性、繼承性和多型性。 一、封裝 1、封裝的含義 封裝 (Encapsulation)是將描述某類事物的資料與處理這些資料的函式封裝在一起,形成一個有機整體,稱為類。 類所具有的封裝性可使程式模組具有良好的獨立性與可維護性,這對大型程式的開發是特別重要的

【C#】之 封裝繼承

我們知道封裝、繼承和多型是面向物件方法設計中的三大基本特性,下面將具體講解這三個特性的具體表現及意義。 #一、封裝 ##1、說明   從字面意思上看,封裝就是打包的意思,將什麼包裝起來,專業一點就是資訊的隱藏,將物件的屬性和方法打包成一個相對獨立的單位,儘可能隱蔽物件的內部細

Java面向物件與執行緒綜合實驗(一)之封裝繼承

編寫一個程式,實現檔案管理系統中的使用者管理模組。要求模組中實現使用者的模擬登入過程。通過使用者輸入,獲取使用者名稱和口令;與事先記錄在程式中的使用者資訊進行對比,通過口令驗證後才能使用系統。使用者分為系統管理人員、檔案錄入人員,檔案瀏覽人員三類,相關類圖如下所示。 (1)要求在使用者類中

封裝繼承的具體例項

封裝 public class Demo_7 { public static void main(String []args) { Stu1 stu1=new Stu1(); stu1.get_age(6);

python中封裝繼承——python學習筆記

1. 準備 封裝、繼承和多型在程式語言中專指面向物件程式設計的特性,下面先給出一個python中建立類的例子: class Student(object): def __init__(self, name, score): self.name = name

JAVA基礎之封裝繼承

封裝、繼承、多型 1、封裝:隱藏實現細節,明確標識出允許外部使用的所有成員函式和資料項,從而防止程式碼或資料被破壞。 2、繼承:子類繼承父類,擁有父類的所有功能,並且可以在父類的基礎上進行擴充套件。實現了程式碼的重用性。子類和父類是相容的。 3、多型:一個介面有多個子類或實現類,

面向物件實驗三( 組合繼承性)

一、實驗目的 1、掌握繼承機制。 2、掌握虛擬函式。 3、理解並掌握虛基類。 二、實驗內容1、編寫一個程式:設計一個汽車類,資料成員有輪子個數、車重。小車類是汽車類的私有派生類,包含載客量。卡車類是汽車類的私有派生類,包含載客數和載重量。每個類都有資料的輸出方法。 #in

js:面向物件程式設計,帶你認識封裝繼承

週末的時候深入的瞭解了下javascript的面向物件程式設計思想,收穫頗豐,感覺對面向物件程式設計有了那麼一丟丟的瞭解了~很開森 什麼是面向物件程式設計 先上一張圖,可以對面向物件有一個大致的瞭解,然而什麼是面向物件呢,用java中的一句經典語

C語言實現封裝繼承

雖然C語言一直被稱為面向過程的設計語言,但是通過使用C語言函式指標和結構體的特性,還是能夠使用C語言實現類似面向物件的封裝、繼承和多型的概念。 下面對原始碼進行分析: validator.h檔案 首先提取了所有校驗器都有的校驗方法,定義了一個校驗器抽象類Validato

php類的封裝繼承的簡單理解

面象對向的三大特點:封裝性、繼承性、多型性 首先簡單理解一下抽象: 我們在前面定義一個類的時候,實際上就是把一類事物共有的屬性和行為提取出來,形成一個物理模型(模版),這種研究問題的方法稱為抽象 一、封裝性  封裝就是把抽取出來的資料和對資料的操作封裝在一起,資料被保護在內

java之 ------ 類的封裝繼承(二)

問題:宣告銀行賬戶類,成員變數包括賬號、儲戶姓名、開啟時間、身份證號碼、存款餘額等賬戶資訊,成員方法包括開戶、存款、取款、查詢(餘額、明細)、銷戶等操作。 主要成員描述如下 public class Account { //

Objective-c:封裝繼承

面向物件的三個基本特徵是:封裝、繼承、多型。 封裝 簡介 封裝是實現面向物件程式設計的第一步,封裝就是將資料或函式等集合在一個個的單元中(我們稱之為類)。被封裝的物件通常被成為抽象資料型

對Java面向物件程式設計的知識點(封裝繼承)進行總結

一 封裝 1.面向物件的高階:優化程式設計    封裝:      類中如何定義成員變數?       private   int  num;      概念      語法        3步驟    繼承:減少冗餘程式碼       繼承:一個類(子類)繼承另一個類(父

第10章 介面繼承

10.1 package tex; public abstract class one { abstract void test(); public static void main(String args[]) { new one(); } } //無法例項化 10.2 p

介面繼承

package com.java.exp10; import sun.font.EAttribute; /** * 1、類的繼承 * 繼承並不只是擴張父類的功能,還可以重寫父類的成員方法。 * 重寫,保留父類的成員方法的名稱,重寫成員方法的實現內容

Python面向物件繼承

面向物件變成的基本思想:類和例項 類用於定義抽象型別---------------------人-----------------------------class  Person(object):------------------資料封裝class Person(object):  

Java核心(介面繼承-繼承2)

一、Object 類    在開始學習使用 class 關鍵字定義類時,就應用到了繼承原理,因為在 Java 中,所有的類都直接或間接繼承了 java.lang.Object 類。 Object 類是比較特殊的類,它是所有類的父類,是Java 類層中的最高層類。當建立一個類時