JAVA基礎(chǔ)(一):多態(tài)(overloading & overridding)的分析
<?示例1>


?1



?2

?3



?4

?5

?6

?7

?8



?9

10



11

12

13

14

15



16



17

18

19

20

21




<練習(xí)>


?1



?2

?3



?4

?5

?6

?7



?8

?9



10

11

12

13



14



15

16

17

18

19



?1

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

<?示例2>


?1



?2



?3

?4

?5

?6

?7



?8



?9

10

11

12

13



14



15

16

17

18

19

20

21

?



<示例3>


?1



?2



?3

?4

?5



?6

?7

?8

?9

10



11



12

13

14



15

16

17

18

?


1

2

3

分析
多態(tài):
Java
中的函數(shù),除了聲明外
final
的外,都是后期綁定。
所謂綁定是建立“函數(shù)調(diào)用”和“函數(shù)本體”的關(guān)聯(lián)。、
所謂的后期綁定是指執(zhí)行時(shí)根據(jù)對(duì)象類別而進(jìn)行
多態(tài)僅僅對(duì)函數(shù)而言,不對(duì)變量而言;
變量的訪問依賴于編譯期引用指向的類型;
方法的訪問依賴于執(zhí)行期對(duì)象的類型;
向上轉(zhuǎn)型后,調(diào)用某個(gè)函數(shù),若
derived class overriding
了該函數(shù),則會(huì)調(diào)用該
derived class
中的函數(shù),否則會(huì)調(diào)用
base class
中的函數(shù)。
向上轉(zhuǎn)型后,只能調(diào)用
base class
中被
derived class overriding
的函數(shù),不能調(diào)用
derived class
中
extend
函數(shù)。
即向上轉(zhuǎn)型后,只能調(diào)用
base class
中的方法,不能調(diào)用
derived class
中的擴(kuò)展方法?
補(bǔ)記:
編譯器自始自終對(duì)引用到底指向哪個(gè)型別無能無力,其認(rèn)為指向聲明的型別,這個(gè)是編譯期。
而java中除了final修飾的方法外,所有函數(shù)都是由“method-cal“的late binding機(jī)制,在執(zhí)行期判知對(duì)象的型別,并調(diào)用相關(guān)的函數(shù),這是執(zhí)行期。


?1



?2



?3

?4

?5



?6

?7

?8

?9



10

11

12

13

14



15



16

17

18



1

2

3

4

5



1

2

3

4

5

6

--------取于 崔毅 之《java編程指南》《java編程思想》學(xué)習(xí)筆記l
posted on 2006-10-11 17:10 crazycy 閱讀(2828) 評(píng)論(6) 編輯 收藏 所屬分類: JavaSE語言