摘要:總的來說多態(tài)解決的問題就是的解耦問題。相反,運行時綁定就是程序在運行前不知道具體使用的方法的類型,只有運行時知道具體使用的方法類型。的整體機制就是使用運行時綁定的。
作為Java的第三大特性--多態(tài),大家肯定很熟悉了,但是對于這個抽象的概念相信總有一些模糊,think in Java 在本章做了很多的解釋,具體講解了一下三個問題。
1.多態(tài)解決了什么問題? 2.什么是多態(tài)? 3.多態(tài)的擴展多態(tài)解決了什么問題?
多態(tài)解決了type的解耦問題。多態(tài)使我們不用去關(guān)注具體的類型是什么,多態(tài)的設(shè)計就是為了讓我們忘記類型這一回事。因為我們不用關(guān)注具體的類型,所以很多代碼我們都可以復(fù)用,我們可以使用一段代碼解決類似的問題。這在我們開發(fā)過程中有很大的作用,這個解耦使我們每一層的使用牽連減小??偟膩碚f多態(tài)解決的問題就是type的解耦問題。在思想上來說,就是讓我們忘記類型。
什么是多態(tài)?當(dāng)我說出這個問題的時候大家可能會下意識的以為我要進行一些很抽象性、很概念性的講解,實際我想說明的并不是這些概念性的東西,這些直接百度即可。那么回到正題,什么是多態(tài)?多態(tài)其實也有一些其他的叫法,我更喜歡其中一種,運行時綁定。
在講解這個詞的時候,首先我們來了解一下綁定。綁定分為運行前綁定和運行時綁定。運行前綁定就是在程序沒有綁定的時候程序就已經(jīng)知道要使用的這個方法的具體類型是哪一個了。相反,運行時綁定就是程序在運行前不知道具體使用的方法的類型,只有運行時知道具體使用的方法類型。這樣也就實現(xiàn)了不用知道具體的Type的效果。
Java的整體機制就是使用運行時綁定的。除了屬性和私有和靜態(tài)方法。
我們知道多態(tài)只能控制父類的方法,對于子類擴展開來的方法是不能進行操作的,但是我們肯定會遇到這種情況。那么在這個時候我們就不能再使用向上轉(zhuǎn)換了,使用向下轉(zhuǎn)換。但是這里面有一個問題,就是我們不知道這個類型是不是這樣你轉(zhuǎn)化的類型,會出現(xiàn)轉(zhuǎn)換出錯的問題,這個在c++里面是不安全的,但是Java里面有一個機制,就是在向下轉(zhuǎn)換的時候一定要強制轉(zhuǎn)換進行檢查,這樣就可以達到安全控制,如果不是會報一個ClassCastException的錯誤。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/76664.html
摘要:基本概念面向?qū)ο缶幊淌怯贸橄蠓绞絼?chuàng)建基于現(xiàn)實世界模型的一種編程模式。使用面向?qū)ο缶幊淌菫榱舜龠M更好的靈活性和可維護性。面向?qū)ο笈c面向過程比較,面向過程更注重過程。 1:基本概念 面向?qū)ο缶幊淌怯贸橄蠓绞絼?chuàng)建基于現(xiàn)實世界模型的一種編程模式。 這句話的意思是:每個對象能夠接受信息,處理數(shù)據(jù)和發(fā)送消息給其他對象;這就意味著在這個編程模式下,每一個對象都是一個獨立的個體,它可以接收,可以處理,...
摘要:排序的算法是歸并排序。舉個例子,的算法可以不是使用歸并排序,但是該算法一定要是穩(wěn)定的。這個類是的一部分。官方這個類只包含操作或返回集合的靜態(tài)方法。具體來說是,第一步,先把集合轉(zhuǎn)換為數(shù)組,第二步,調(diào)用。和沒有什么區(qū)別,只是傳參有點不同。 Arrays 1.作用看類的名字,就知道是對數(shù)組(數(shù)據(jù)類型[])進行各種操作。例如,排序、查找、復(fù)制等。 排序的算法是歸并排序。查找的算法是二分查找。復(fù)...
摘要:編程語言及面向?qū)ο蠡A(chǔ)題 編程語言及面向?qū)ο蠡A(chǔ)題 Design Pattern What is singleton? Whats its cons and pros? How to implement it?Definition: Singleton pattern is a design pattern that ensure that only one instance of a...
What is Java? Java is a high-level platform-independent object oriented programming language. List some features of Java? Object Oriented, Platform Independent, Multi-threaded, Interpreted, Robust, pa...
摘要:原文是一門編譯到的強類型靜態(tài)類型語言它的功能受到的激發(fā)并且使用編寫其目標(biāo)是編譯到同時保持清潔跟可讀而且根據(jù)作者所說具備跟其他編譯到的語言相互操作的能力繼承了當(dāng)中一些突出的功能其中有類型推斷允許在任何可能的地方減少類型聲明的書寫一種類型構(gòu) 原文: http://www.infoq.com/news/2014/09/purescript-haskell-javascript PureS...
閱讀 880·2021-11-25 09:43
閱讀 3708·2021-11-19 09:40
閱讀 919·2021-09-29 09:34
閱讀 1840·2021-09-26 10:21
閱讀 906·2021-09-22 15:24
閱讀 4242·2021-09-22 15:08
閱讀 3302·2021-09-07 09:58
閱讀 2754·2019-08-30 15:55