Java面對物件第四天 多型

2021-08-19 21:38:59 字數 2670 閱讀 7669

1.多型定義

多型:同乙個行為具有多個不同的表現形式或形態的能力.

多型就是同乙個介面,使用不同的例項而執行的不同的操作;

2.多型的優點:

1.消除型別之間的耦合關係 2. 可替換性 3.可擴充套件性 4.介面性 5靈活性 6.簡化性;

3.多型存在的 三個必要的條件; 

1. 繼承     2.重寫   3.父類引用指向子類物件(子類在記憶體中堆中開闢新的空間)

parent p = new child();//經典的父類引用指向子類物件()

! 注意 當使用多型的方式呼叫方法時候,首先要檢查父類中是否有該方法,如果有.再去呼叫子類的同名方法;

4. 多型的優點

1.可以使程式有良好的擴充套件.並可以對所有類的物件進行通用處理;

例項

* 需求: 建立 動物類 貓類 狗類

* 都有乙個吃的方法 動物類 動物吃飯

*  貓   貓吃魚

*  狗   狗吃骨頭

class animal

}

class cat extends animal

}

class dog extends animal

}

public class test }這時列印的結果是 : 貓吃魚   貓吃魚   狗吃骨頭
5 .多型是如何使用成員方法和呼叫成員變數;

1.父類的應用 :只能訪問到子類空間中屬於父類的那塊空間;(子類空間屬於父類的那塊空間是從父類繼承得到了);

2. 如果在父類中沒有成員變數;那麼你子類通過多型建立的物件 無法編譯自己本身存有的成員變數(這個成員變數父類沒有);

這時列印出來的也是父類成員變數的數型; 

3.多型呼叫成員方法: 如果你子類通過多型獲得物件;該物件要想呼叫自己的方法,那麼你的父類必須有個和子類一樣的方法;

雖然最終列印的是子類的方法;但是編譯的時候找的父類;

package com.lanou3g;

/*

* 多型如何使用成員變數

* 父類的應用 只能訪問到子類空間中 屬於父類的那塊空間;

* 編譯: 編譯時 父類中是否有這個屬性 沒有就編譯錯誤;

* 執行:執行時候放問的是父類中的這個成員變數;

*

* 結論:當使用多型形式建立物件的時候;

* 訪問成員變數時候;編譯和執行都是看父類中的屬性;

*

*

* 多型 呼叫成員方法:

*

* 編譯:編譯時 需要看父類中是否有該方法 沒有就報錯;

* 有就編譯通過;

* 執行: 執行時 呼叫的是子類重寫父類的方法;

* 結論: 編譯看父類 執行看子類;

* 不能直接呼叫子類的print()方法:因為看不到啊;

*/

public

class demo02多型使用成員變數

}

class father

}

class son extends father

}

1.多型主要指呼叫父類的方法時,

根據使用的子類物件不同,

而使用了不同的子類方法。

這個大概就是所說的「向下轉型」了

假設b是a的子類 ,b本身就具有了a中的方法和自己的方法(為什麼還要用向下轉型呢?)

所謂的「向下轉型」的意思不是從b往下,

而是從a往下吧?

有人說 如果子類所需要的功能在父類中存在 就用向上轉型; 父類所需要的功能在子類存在 就使用向下轉型。
例項:

public

class demo03多型的好處與弊端

}class person

}class

pianzi

extends

person

// 特有方法

public

void hit()

}

面對物件 多型

1,多型 封裝1,私有化 保證資料安全性 2,抽取成方法 提高 的復用性和可維護性 繼承可以讓類跟類之間產生關係 可以抽取重複的 到父類中。是多型的前提 多型多種形態 概述 student s new student 真正的物件 new student 左邊的s 僅僅是乙個接收變數而已。因為要方便以...

面對物件多型 C 面對物件設計學習資料(多型)

c語言初學 態性是指相同的行為可能於多種型別的隊形上獲得不同的結果。不同的物件,收到同一訊息的可能產生不同的結果,這種現象稱為多型。多型可分為靜態多型和動態多型兩種。多型的優點 組織結構清晰 可讀性強 利於前期和後期的擴充套件和維護。靜態多型 函式和運算子過載。2.動態多型 這 呼叫dospeak ...

Java總結第四天

1 方法是一段可重複呼叫的 段 定義格式 訪問修飾符 返回值型別 方法名 引數 2 方法的過載 方法名稱相同,但是引數的型別的個數不同,通過傳遞引數的個數和型別不同來完成不同的功能 3 理解物件導向 程式的發展過程 面向過程 物件導向 面向過程 不去做什麼樣的盒子,隨機取工具製作 物件導向 先想好乙...