java 多态_Java面向对象 —— 多态
前兩天已經相繼介紹了Java面向對象的三大特性之中的封裝、繼承,所以今天就介紹Java面向對象的三大特性的最后一項,多態~
首先講一下什么是多態,以及多態需要注意的細節 什么是多態:一個對象具備多種形態,也可以理解為事物存在的多種體現形態(父類的引用類型變量指向了子類對象,或者是接口的引用類型變量指向了接口實現類的對象) 多態的前提:必須存在繼承或者實現關系。 多態要注意的細節:
下面開始正式的內容
一、概念:
多態體現為父類引用變量可以指向子類對象。
多態的前提是必須有子父類關系或者類實現接口關系,否則無法完成多態。
在使用多態后的父類引用變量調用方法時,會調用子類重寫后的方法。
二、定義:
父類類型 變量名 = new 子類類型(); 變量名.方法名();三、多態的成員特點:
成員變量:編譯運行都看左邊(父類);
成員方法:編譯看左,運行看右(子類)。
四、instanceof 關鍵字
用instanceof關鍵字來判斷某個對象是否屬于某種數據類型(若是根本沒關系的話,直接編譯失敗;編譯成功可能為父元素的另外一個子元素)
五、多態-轉型:
1、向上轉型:
當有子類對象賦值給一個父類引用時,便是向上轉型。-------多態本身就是向上轉型的過程
父類類型 變量名 = new 子類類型();2、向下轉型:
一個已經向上轉型的子類對象可以使用強制類型轉換的格式,將父類引用轉為子類引用,這個過程是向下轉型。
在多態的基礎上才可以的,也就是得先向上再向下的!
向下轉型后調用對象和方法時,都是調用的子類的方法;也可以調用子類獨有的普通方法。
子類類型 變量名 = (子類類型) 父類類型的變量;六、多態的優劣:
1、什么時候用向上轉型:
當不需要面對子類類型時,通過提高擴展性,或者使用父類的功能就能完成相應的操作,這時就可以使用向上轉型。
2、什么時候用向下轉型:
當要使用子類特有功能時,就需要使用向下轉型。
向下轉型的好處:可以使用子類特有功能。
弊端是:需要面對具體的子類對象;在向下轉型時容易發生ClassCastException類型轉換異常。在轉換之前必須做類型判斷。(有可能轉到另外的一個子元素上,這時候就需要instanceof 判定下是不是所需要的數據類型)
Person p1 = new Student(); // 前提條件,學生類已經繼承了人類 boolean flag = p1 instanceof Student; //flag結果為true boolean flag2 = p1 instanceof Teacher; //flag結果為false看過的朋友們,如果覺得對你有幫助,記得動動小手點個贊~
總結
以上是生活随笔為你收集整理的java 多态_Java面向对象 —— 多态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 货币显示_在MySQL中以正
- 下一篇: java mongodb gridfs_