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 理解物件導向 程式的發展過程 面向過程 物件導向 面向過程 不去做什麼樣的盒子,隨機取工具製作 物件導向 先想好乙...