物件導向 多型 二十三

2021-08-26 09:43:03 字數 2484 閱讀 1226

一.多型的概述及其**體現

* a:多型(polymorphic)概述

* 事物存在的多種形態

* b:多型前提

* a:要有繼承關係。

* b:要有方法重寫。

* c:要有父類引用指向子類物件。

class demo1_polymorphic 

}class animal

}class cat extends animal

}

二.多型中的成員訪問特點之成員變數

成員變數

* 編譯看左邊(父類),執行看左邊(父類)。

多型中的成員變數:

三.多型中的成員訪問特點之成員方法

* 成員方法

* 編譯看左邊(父類),執行看右邊(子類)。

多型中的成員方法:

四.多型中的成員訪問特點之靜態成員方法

* 靜態方法

* 編譯看左邊(父類),執行看左邊(父類)。

* (靜態和類相關,算不上重寫,所以,訪問還是左邊的)

* 只有非靜態的成員方法,編譯看左邊,執行看右邊

class demo2_polymorphic 

}class father

public static void method()

}class son extends father

public static void method()

}

五.舉例

六.多型中向上轉型和向下轉型

七.多型的好處和弊端

* a:多型的好處

* a:提高了**的維護性(繼承保證)

* b:提高了**的擴充套件性(由多型保證)

* b:示例

* 多型的好處

* 可以當作形式引數,可以接收任意子類物件

* c:多型的弊端

* 不能使用子類的特有屬性和行為。

class demo4_animal 

//cat c = new dog();狗是乙隻貓,這是錯誤的

/*public static void method(cat c)

public static void method(dog d) */

//如果把狗強轉成貓就會出現型別轉換異常,classcastexception

public static void method(animal a) else if (a instanceof dog) else }}

class animal

}class cat extends animal

public void catchmouse()

}class dog extends animal

public void lookhome()

}

八.多型中的面試題題目分析題

a:看下面程式是否有問題,如果沒有,說出結果

*class fu

}class zi extends fu

public void method()

}class test1demo

}

class test1_polymorphic 

}class fu

}class zi extends fu

public void method()

}

* b:看下面程式是否有問題,如果沒有,說出結果

*class a

public void show2()

}class b extends a

}class c extends b

public void show2()

}public class test2duotai

}

class test2_polymorphic 

}class a

public void show2()

}class b extends a

public void show2()

}class c extends b

public void show2()

}

二十三 面向協議程式設計

的注意點 a.有限考慮建立協議,而不是父類 基類 b.優先考慮值型別 struct enum 而不是引用型別。c.巧用協議的拓展功能。d.不要為了面向協議而使用協議。6.利用協議實現字首效果 字首型別 struct mj 利用協議拓展字首屬性 protocol mjcompatibble exten...

隨筆 二十三

1.gradle 完a整指南 android 2.android gradle 外掛程式 3.0 挖坑日記 3.android效能優化全方面解析 4.android studio 3.2新功能特性 5.重新認識 androidstudio 和 gradle,這些都是你應該知道的 6。美團外賣andr...

演算法(二十三)

1 給定乙個整數陣列nums,找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。public int maxsubarray int nums return maxsum 複雜度分析 public int maxsubarray int nums return maxsum 2 ...