日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java:多态性

發布時間:2024/4/15 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java:多态性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java的多態性:發送消息給某個對象,讓該對象自行決定響應何種行為。 通過將子類對象引用賦值給超類對象引用變量來實現動態方法調用。

java的多態性要滿足三個條件:

1、繼承關系

2、在子類重寫父類的方法

3、父類引用指向子類的對象,即animal p = new dog()

在多態中非靜態成員函數的特點:

在編譯時期:參閱引用形變量所屬的類中是否有要調用的方法。如果有,編譯通過;否則,編譯不通過

在運行時期:參閱對象所屬的類中是否有要調用的方法。如果有,運行成功;否則,運行失敗。

總結:編譯時期看做左邊,運行時期看右邊。

在多太中成員變量和靜態成員函數的特點:

無論編譯和運行都參考左邊(引用類型變量所屬的類)

?

例子1:創建父類動物類Animal、子類貓類Cat、子類狗類Dog

//創建父類animal動物類 abstract class Animal {public abstract void eat(); } //創建動物類子類:貓類 class Cat extends Animal {public void eat(){System.out.println("吃魚");} } //創建動物類子類:狗類 class Dog extends Animal {public void eat(){System.out.println("吃骨頭");} }//多態的表現形式 class DuoTaiDemo {public static void main(String[] args) {Animal a = new Cat(); //父類的引用指向子類對象a.eat(); //父類中有eat()方法,編譯通過,子類中也有eat()方法,所以最終編譯成功 function(new Cat());function(new Dog());}//將動物類的引用當做參數傳遞給方法public static void function(Animal a){//判斷如果是Dogif(a instanceof Dog ){a.eat(); //調用父類的eat()方法Dog b = (Dog) a; //調用Dog的eat()方法 b.eat();}//如果是Catelse if(a instanceof Cat){a.eat();//調用父類的eat()方法Cat b = (Cat) a;//調用Cat的eat()方法 b.eat();}} }

例子2:多態的功能擴展

? 基于電腦的實例(電腦主板)

? 擴展(網卡、聲卡、、、)

interface PCI //擴展功能的接口(規則) {public abstract void open();public abstract void close(); }class MainBoard //主板類 {public void run(){System.out.println("Mi anBoard run");}public void usePCI(PCI p) //PCI p = new NetCard() //接口型的引用指向自己的子類對象 {p.open();p.close();} }class NetCard implements PCI // 實現網卡的連接 {public void open(){ System.out.println("NetCard open");}public void close(){System.out.println("NetCard close");} }class SoundCard implements PCI // 實現聲卡的連接 {public void open(){ System.out.println("soundcard open");}public void close(){System.out.println("soundcard close");} }//主函數測試 class DuoTaiDemo1 {public static void main(String[] args){MainBoard mb = new MainBoard();mb.run();mb.usePCI(new NetCard()); mb.usePCI(new SoundCard());} }

例子3:多態的擴展實例:連接數據庫(用戶可以create、add、update、delete)

interface UserInfoDao //D:data a:access o:object {public abstract void add();public abstract void deletde(); }class UserInfoByJDBC implements UserInfoDao //手寫連接數據庫 {public void add(){1、JDBC連接數據庫2、使用sql添加語句添加數據3、關閉數據庫連接}public void delete(){1、JDBC連接數據庫2、使用sql刪除語句刪除數據3、關閉數據庫連接} }class UserInfoByHibernate implements UserInfoDao //框架連接數據庫 {public void add(){1、Hibernate連接數據庫2、使用sql添加語句添加數據3、關閉數據庫連接}public void delete(){1、Hibernate連接數據庫2、使用sql刪除語句刪除數據3、關閉數據庫連接} }class DBoperate {public static void main(String[] args) {/* UserInfoDao ui = new UserInfoByJDBC(); //多態引用類型指向子類對象ui.add();ui.delete();UserInfoDao ui = new UserInfoByHibernate(); //多態引用類型指向子類對象ui.add();ui.delete();*/ui.add(new UserInfoByJDBC());ui.delete(new UserInfoByJDBC());ui.add(new UserInfoByHibernate());ui.delete(new UserInfoByHibernate());} }

?

轉載于:https://www.cnblogs.com/XYQ-208910/p/4915480.html

總結

以上是生活随笔為你收集整理的Java:多态性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。