成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳細(xì)介紹Java多態(tài)性(一)

開發(fā) 后端
本文介紹的是JAVA的多態(tài)性,希望對(duì)你有幫助,一起來看。

多態(tài)性:發(fā)送消息給某個(gè)對(duì)象,讓該對(duì)象自行決定響應(yīng)何種行為。通過將子類對(duì)象引用賦值給超類對(duì)象引用變量來實(shí)現(xiàn)動(dòng)態(tài)方法調(diào)用。下面介紹java的多態(tài)性。

面向?qū)ο缶幊逃腥齻€(gè)特征,即封裝、繼承和多態(tài)。

封裝隱藏了類的內(nèi)部實(shí)現(xiàn)機(jī)制,從而可以在不影響使用者的前提下改變類的內(nèi)部結(jié)構(gòu),同時(shí)保護(hù)了數(shù)據(jù)。

繼承是為了重用父類代碼,同時(shí)為實(shí)現(xiàn)多態(tài)性作準(zhǔn)備。那么什么是多態(tài)呢?

方法的重寫、重載與動(dòng)態(tài)連接構(gòu)成多態(tài)性。Java之所以引入多態(tài)的概念,原因之一是它在類的繼承問題上和C++不同,后者允許多繼承,這確實(shí)給其帶來的非常強(qiáng)大的功能,但是復(fù)雜的繼承關(guān)系也給C++開發(fā)者帶來了更大的麻煩,為了規(guī)避風(fēng)險(xiǎn),Java只允許單繼承,派生類與基類間有IS-A的關(guān)系(即“貓”is a “動(dòng)物”)。

這樣做雖然保證了繼承關(guān)系的簡(jiǎn)單明了,但是勢(shì)必在功能上有很大的限制,所以,Java引入了多態(tài)性的概念以彌補(bǔ)這點(diǎn)的不足,此外,抽象類和接口也是解決單繼承規(guī)定限制的重要手段。同時(shí),多態(tài)也是面向?qū)ο缶幊痰木杷凇?/p>

要理解多態(tài)性,首先要知道什么是“向上轉(zhuǎn)型”。

我定義了一個(gè)子類Cat,它繼承了Animal類,那么后者就是前者是父類。我可以通過

  1. Cat c = new Cat(); 

實(shí)例化一個(gè)Cat的對(duì)象,這個(gè)不難理解。但當(dāng)我這樣定義時(shí):

  1. Animal a = new Cat(); 

這代表什么意思呢?

很簡(jiǎn)單,它表示我定義了一個(gè)Animal類型的引用,指向新建的Cat類型的對(duì)象。由于Cat是繼承自它的父類Animal,所以Animal類型的引用是可以指向Cat類型的對(duì)象的。那么這樣做有什么意義呢?因?yàn)樽宇愂菍?duì)父類的一個(gè)改進(jìn)和擴(kuò)充,所以一般子類在功能上較父類更強(qiáng)大,屬性較父類更獨(dú)特,

定義一個(gè)父類類型的引用指向一個(gè)子類的對(duì)象既可以使用子類強(qiáng)大的功能,又可以抽取父類的共性。所以,父類類型的引用可以調(diào)用父類中定義的所有屬性和方法,而對(duì)于子類中定義而父類中沒有的方法,它是無(wú)可奈何的;同時(shí),父類中的一個(gè)方法只有在在父類中定義而在子類中沒有重寫的情況下,才可以被父類類型的引用調(diào)用;對(duì)于父類中定義的方法,如果子類中重寫了該方法,那么父類類型的引用將會(huì)調(diào)用子類中的這個(gè)方法,這就是動(dòng)態(tài)連接。

看下面這段程序:

  1. class Father{  
  2. public void func1(){  
  3. func2();  
  4. }  
  5. //這是父類中的func2()方法,因?yàn)橄旅娴淖宇愔兄貙懥嗽摲椒? 
  6. //所以在父類類型的引用中調(diào)用時(shí),這個(gè)方法將不再有效  
  7. //取而代之的是將調(diào)用子類中重寫的func2()方法  
  8. public void func2(){  
  9. System.out.println("AAA");  
  10. }  
  11. }  
  12. class Child extends Father{  
  13. //func1(int i)是對(duì)func1()方法的一個(gè)重載  
  14. //由于在父類中沒有定義這個(gè)方法,所以它不能被父類類型的引用調(diào)用  
  15. //所以在下面的main方法中child.func1(68)是不對(duì)的  
  16. public void func1(int i){  
  17. System.out.println("BBB");  
  18. }  
  19. //func2()重寫了父類Father中的func2()方法  
  20. //如果父類類型的引用中調(diào)用了func2()方法,那么必然是子類中重寫的這個(gè)方法  
  21. public void func2(){  
  22. System.out.println("CCC");  
  23. }  
  24. }  
  25. public class PolymorphismTest {  
  26. public static void main(String[] args) {  
  27. Father child = new Child();  
  28. child.func1();//打印結(jié)果將會(huì)是什么?  
  29. }  

上面的程序是個(gè)很典型的多態(tài)的例子。子類Child繼承了父類Father,并重載了父類的func1()方法,重寫了父類的func2()方法。重載后的func1(int i)和func1()不再是同一個(gè)方法,由于父類中沒有func1(int i),那么,父類類型的引用child就不能調(diào)用func1(int i)方法。而子類重寫了func2()方法,那么父類類型的引用child在調(diào)用該方法時(shí)將會(huì)調(diào)用子類中重寫的func2()。
那么該程序?qū)?huì)打印出什么樣的結(jié)果呢?

很顯然,應(yīng)該是“CCC”。

對(duì)于多態(tài),可以總結(jié)它為:

一、使用父類類型的引用指向子類的對(duì)象;

二、該引用只能調(diào)用父類中定義的方法和變量;

三、如果子類中重寫了父類中的一個(gè)方法,那么在調(diào)用這個(gè)方法的時(shí)候,將會(huì)調(diào)用子類中的這個(gè)方法;(動(dòng)態(tài)連接、動(dòng)態(tài)調(diào)用)

四、變量不能被重寫(覆蓋),”重寫“的概念只針對(duì)方法,如果在子類中”重寫“了父類中的變量,那么在編譯時(shí)會(huì)報(bào)錯(cuò)。

希望對(duì)你有幫助,請(qǐng)看下一篇>>

責(zé)任編輯:于鐵 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-07-11 16:45:25

JAVA多態(tài)性

2009-06-19 14:10:42

Java多態(tài)性

2009-09-01 14:51:19

C#多態(tài)性

2023-10-20 09:51:00

編程開發(fā)

2010-01-28 16:16:32

C++多態(tài)性

2010-02-01 14:07:12

C++多態(tài)性

2011-03-08 09:40:26

Java多態(tài)性

2009-09-24 17:19:06

運(yùn)行時(shí)多態(tài)性

2009-08-28 16:48:50

C#多態(tài)性

2009-09-01 15:08:18

C#多態(tài)性

2009-11-23 19:33:12

PHP5多態(tài)性

2011-07-11 17:33:25

JAVA可移植性

2010-09-14 09:30:04

Java多態(tài)

2011-07-22 17:41:02

java

2020-09-26 21:44:57

If-Else代碼開發(fā)

2017-12-14 08:04:21

Java面試程序

2011-07-21 13:51:38

java

2021-06-10 18:59:41

Java編程語(yǔ)言

2011-04-06 08:57:07

C++java多態(tài)

2011-04-12 10:40:04

C++多態(tài)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩一区二区在线播放 | 欧美一区二区大片 | 亚洲码欧美码一区二区三区 | 国产综合精品一区二区三区 | 日本欧美大片 | 亚洲精品一区国语对白 | 91视频一区 | 一区二区三区国产 | 成人三级网址 | 在线免费观看a级片 | 国产在线一区二区三区 | 国产高清一区二区 | 成人精品鲁一区一区二区 | 91亚洲国产成人久久精品网站 | 人人叉 | 久久激情视频 | 91精品国产一区二区三区 | av中文字幕在线播放 | 一区二区高清 | 韩日一区 | 中文字幕成人 | 国产精品成人一区 | 视频在线日韩 | 欧美高清视频 | 国产日韩在线观看一区 | 日韩欧美精品一区 | 天天操操 | 日本午夜免费福利视频 | 亚洲97| 99精品视频一区二区三区 | 日本精品一区 | 日韩精品一区二区三区在线播放 | 国产成人网 | 国产日产欧产精品精品推荐蛮挑 | 国内自拍真实伦在线观看 | 午夜欧美 | 成人免费视频网站 | 中文字幕亚洲精品 | 亚洲色综合 | 欧美精品一区二区三区在线 | 欧美在线免费 |