强奸久久久久久久|草草浮力在线影院|手机成人无码av|亚洲精品狼友视频|国产国模精品一区|久久成人中文字幕|超碰在线视屏免费|玖玖欧洲一区二区|欧美精品无码一区|日韩无遮一区二区

首頁 > 產品 > 問答 > 里氏替換原則,java什么是里氏替換原則

里氏替換原則,java什么是里氏替換原則

來源:整理 時間:2023-08-20 14:31:26 編輯:智能門戶 手機版

本文目錄一覽

1,java什么是里氏替換原則

子類可以替換父類了也就是是父類出現(xiàn)的地方都可以用子類替代switch不存在這個概念吧
所謂里氏替換原則,就是讓你的某一段程序耦合于基類或者接口,而不是具體繼承了基類的子類或實現(xiàn)接口的具體類型。僅替換子類不會讓你這個程序的屬性有所改變。所謂多態(tài)機制,則是給了你達成上述原則的其中一種能力。舉個栗子來說,同樣是list基類/接口,子類可以是用array實現(xiàn)也可以用linkedlist實現(xiàn),但都必須實現(xiàn)at方法(得到具體某個index的值)。你現(xiàn)在用list實現(xiàn)了一個找最小值的算法,我們假設你是一個個遍歷過去找的,那么不管底下是array實現(xiàn)還是linkedlist實現(xiàn)(子類替換),你的算法都應該是返回最小值(屬性不變),只是用linkedlist的時候很蠢。而你知道at方法對于array和linkedlist實現(xiàn)是不一樣的,list調用at的時候根據底下具體的實現(xiàn)決定調用哪一個,這貨就叫做多態(tài)。

java什么是里氏替換原則

2,繼承的說話與里氏替換原則

也就是說基類所能提供的服務(所提供的功能)能夠在自類中有所作用。 比如鳥基類和繼承自他的燕子類,鳥類有飛行的方法,而燕子可以繼承使用這個方法,他們就合適作為繼承。 而鴕鳥就不適合繼承自鳥,因為鴕鳥修改了他父類的功能,也就是屏蔽掉了?;卮鹧a充:面向對象設計的原則是這樣的,并不是說一定,只不過如果子類會屏蔽或者修改父類行為,那么這種繼承就不是一個好的設計而已。你當然可以把一個垃圾桶繼承自水桶,但是水桶是放水的,而垃圾桶屏蔽了水桶的放水的功能而放垃圾了,當你使用多態(tài)特性的時候你會發(fā)現(xiàn)你有可能把水放在一個垃圾桶里面,這水還能喝么?
在面向對象思想中可知,派生類擁有基類向下公開的所有特征,它是基類的一個特例。 當派生類對象賦于基類類型時,將出現(xiàn)以下情況:派生類的數據結構依次對應于基類的數據結構。而派生類擁有的自己的數據將不可見。 當基類的對象試圖轉換為派生類型時,將出現(xiàn)基類對象的數據無法依次填充完派生類的所有數據結構。這就造成了它將無法完成派生類定義的功能。編譯器將會提示甚至報錯。 這就是派生類能勝任基類功能,而基類卻無法完全勝任派生類功能的原因。 強制轉換屬于 基類到派生的過程:那是因為 設計人員知道:該基類對象的數據結構完全可以填充完派生類的結構。否則,將出現(xiàn)強轉錯誤。一般最好避免使用強轉! 還有,子類能夠出現(xiàn)在任何父類對象出現(xiàn)的地方不是完全正確的,父類有時也不會將自己的一些成員公開給子類。

繼承的說話與里氏替換原則

3,誰能用一句通俗的話來說名一下java中的里氏代換原則

里氏代換原則(LSP):如果對每一個類型為T1的對象o1,都有類型為T2的對象o2,使得以T1定義的所有程序P在所有的對象o1都代換成o2時,程序P的行為沒有變化,那么類型T2是類型T1的子類型。換言之,一個軟件實體如果使用的是一個基類的話,那么一定使用于其子類,而且它根本不能察覺出基類對象和子類對象的區(qū)別。里氏代換原則是繼承復用的基石。只有當衍生類可以替換掉基類,軟件單位的功能不會受到影響時,基類才真正被復用,而衍生類也才能夠在基類的基礎上增加新的行為。
就是 父類引用只能指向子類的實例?。。。?! 這個意思還可以說:子類的引用不能指向父類的實例夠簡單了吧
都有類型為T2的對象o2,使得以T1定義的所有程序P在所有的對象o1都代換成o2時。里氏代換原則是繼承復用的基石
李氏代換原則,如果把“人”當成父類,“程序員”可以看成是他的子類,程序員肯定是人,但人不一定就是程序員,例:人還可能是司機教師等,它們不一定會編程 所以把父類聲明實例化的對象強制轉換為子類對象會發(fā)生異常
就是 父類引用只能指向子類的實例?。。。?! 這個意思還可以說:子類的引用不能指向父類的實例夠簡單了吧
李氏代換原則,如果把“人”當成父類,“程序員”可以看成是他的子類,程序員肯定是人,但人不一定就是程序員,例:人還可能是司機教師等,它們不一定會編程 所以把父類聲明實例化的對象強制轉換為子類對象會發(fā)生異常

誰能用一句通俗的話來說名一下java中的里氏代換原則

4,如何理解里氏替換原則

我簡單的給你說一下吧。首先,這是編譯器的要求,如果不這么做,無法通過編譯。其次,面向對象的編程,其中繼承有個大原則,任何子類的對象都可以當成父類的對象使用。如有父類人類,可以使用一般的槍,有警察類,可以使用任何的槍。class Person void shoot(SimpleGun simpleGun);}class Police extends Person void shoot(Gun gun);}其中SimpleGun extends Gun。這樣的話任何警察類的對象都可以被當做人類來使用。也就是說警察類既然會使用任何的槍,當然可以使用一般的槍。Person person = new Police();person.shoot(simpleGun);而如果反過來,普通人可以使用任何搶,警察只能使用一般槍。class Person void shoot(Gun gun);}class Police extends Person void shoot(SimpleGun simpleGun);}這樣的話就不合理了,既然警察是人類的一個子類,所以警察也是人類,既然是人類就應該能使用人類的方法,也就是使用任何的槍,可以根據上面的定義,反而警察類的能力還變小了。所以有一個原則,子類的能力必須大于等于父類,即父類可以使用的方法,子類都可以使用。返回值也是同樣的道理。假設一個父類方法返回一個List,子類返回一個ArrayList,這當然可以。如果父類方法返回一個ArrayList,子類返回一個List,就說不通了。這里子類返回值的能力是比父類小的。還有拋出異常的情況。任何子類方法可以聲明拋出父類方法聲明異常的子類。而不能聲明拋出父類沒有聲明的異常。這一切都是為了,任何子類的對象都可以當做父類使用。

5,里氏替換原則的簡介

在面向對象思想中可知,派生類擁有基類向下公開的所有特征,它是基類的一個特例。 當派生類對象賦于基類類型時,將出現(xiàn)以下情況:派生類的數據結構依次對應于基類的數據結構。而派生類擁有的自己的數據將不可見。 當基類的對象試圖轉換為派生類型時,將出現(xiàn)基類對象的數據無法依次填充完派生類的所有數據結構。這就造成了它將無法完成派生類定義的功能。編譯器將會提示甚至報錯。 這就是派生類能勝任基類功能,而基類卻無法完全勝任派生類功能的原因。 強制轉換屬于 基類到派生的過程:那是因為 設計人員知道:該基類對象的數據結構完全可以填充完派生類的結構。否則,將出現(xiàn)強轉錯誤。一般最好避免使用強轉! 還有,子類能夠出現(xiàn)在任何父類對象出現(xiàn)的地方不是完全正確的,父類有時也不會將自己的一些成員公開給子類。
里氏替換原則(liskov substitution principle lsp)面向對象設計的基本原則之一。 里氏替換原則中說,任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)。 lsp是繼承復用的基石,只有當衍生類可以替換掉基類,軟件單位的功能不受到影響時,基類才能真正被復用,而衍生類也能夠在基類的基礎上增加新的行為。如此,問題產生了:“我們如何去度量繼承關系的質量?”liskov于1987年提出了一個關于繼承的原則“inheritance should ensure that any property proved about supertype objects also holds for subtype objects.”——“繼承必須確保超類所擁有的性質在子類中仍然成立?!币簿褪钦f,當一個子類的實例應該能夠替換任何其超類的實例時,它們之間才具有is-a關系。該原則稱為liskov substitution principle——里氏替換原則。林先生在上課時風趣地稱之為“老鼠的兒子會打洞”。^_^

6,里氏替換原則與依賴倒置原則有什么區(qū)別

區(qū)別:1. 定義不同:里氏替換原則是關于子類與父類的原則;依賴倒置原則是關于抽象與細節(jié)的原則。2. 應用范圍不同:依賴倒置原則的應用范圍比里氏替換原則更廣泛。3. 涉及的對象關系不同:里氏替換原則中的子類具有自己的獨立性;依賴倒置原則中的細節(jié)依賴于抽象。衍生知識點:一、里氏替換原則定義1:如果對每一個類型為T1的對象o1,都有類型為T2的對象o2,使得以T1定義的所有程序P在所有的對象o1都代換成o2時,程序P的行為沒有發(fā)生變化,那么類型T2是類型T1的子類型。定義2:所有引用基類的地方必須能透明地使用其子類的對象。通俗來講:子類可以擴展父類的功能,但不能改變父類原有的功能。是OCP的擴展。它包含以下四層含義:1. 子類可以實現(xiàn)父類的抽象,但不能覆蓋父類的非抽象方法2. 子類中可以增加自己特有的方法3. 當子類的方法重載父類的方法時,方法的前置條件(即方法的形參)要比父類方法的輸入更寬松4. 當子類的方法實現(xiàn)父類的抽象方法時,方法的后置條件(即方法的返回值)要比父類的更嚴格二、依賴倒置原則定義:高層模塊不應該依賴底層模塊,二者都應該依賴其抽象;抽象不應該依賴細節(jié);細節(jié)應該依賴抽象。問題由來:類A直接依賴類B,假如要將類A改為依賴類C,則必須通過修改類A的代碼來達成。這種場景下,類A一般是高層模塊,負責復雜的業(yè)務邏輯;類B和類C是低層模塊,負責基本的原子操作;假如修改類A,會給程序帶來不必要的風險。解決方案:將類A修改為依賴接口I,類B和類C各自實現(xiàn)接口I,類A通過接口I間接與類B和類C發(fā)生聯(lián)系,則會大大降低修改類A的幾率。核心思想:面向接口編程。含有下面3點:1. 低層模塊盡量都要有抽象類或接口,或者兩者都有2. 變量的聲明類型盡量使抽象類或接口3. 用繼承時遵循里氏替換原則
里氏替換原則(Liskov Substitution Principle LSP)面向對象設計的基本原則之一。 里氏替換原則中說,任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)。 LSP是繼承復用的基石,只有當衍生類可以替換掉基類,軟件單位的功能不受到影響時,基類才能真正被復用,而衍生類也能夠在基類的基礎上增加新的行為。依賴倒置原則(Dependence Inversion Principle)是程序要依賴于抽象接口,不要依賴于具體實現(xiàn)。簡單的說就是要求對抽象進行編程,不要對實現(xiàn)進行編程,這樣就降低了客戶與實現(xiàn)模塊間的耦合。依賴倒置原則 A.高層次的模塊不應該依賴于低層次的模塊,他們都應該依賴于抽象。 B.抽象不應該依賴于具體實現(xiàn),具體實現(xiàn)應該依賴于抽象。
文章TAG:里氏替換原則java什么是里氏替換原則

最近更新

  • 5s不用原裝數據線嗎5s不用原裝數據線嗎

    蘋果5s原裝數據與非原裝數據行、數據行非。Apple5s原裝數據Line與山寨數據Line5s已鑒定山寨數據有什么區(qū)別和缺點?iphone可以用原裝數據以外的線充電嗎?iPhone可以使用原裝數據以外的線.....

    問答 日期:2023-08-20

  • 激磁,什么是激磁激磁,什么是激磁

    什么是激磁2,熱鬧的新刻絲激磁是什么3,什么是激磁磁場4,什么叫激磁電流什么叫自饋試5,發(fā)電機激磁方式有哪幾種6,什么叫激磁電流1,什么是激磁電流通過線圈,激發(fā)而產生磁場2,熱鬧的新刻絲激磁是.....

    問答 日期:2023-08-20

  • 制氧機有用嗎,家用制氧機好用嗎制氧機有用嗎,家用制氧機好用嗎

    家用制氧機好用嗎2,制氧機管用嗎制氧機真的有效嗎3,家用保健氧氣機真的管用么4,制氧機真的能制造氧氣嗎5,家用制氧機治療效果怎么樣6,家用制氧機真的有效果嗎1,家用制氧機好用嗎好用2,制氧機.....

    問答 日期:2023-08-20

  • 大數據和云計算哪個難大數據和云計算哪個難

    大數據云計算不難學。大數據云計算難學嗎?大數據云計算難學嗎?大數據云計算難學嗎?Da數據和Yun計算有什么區(qū)別?Da數據和Yun計算有什么區(qū)別?Yun計算和Da數據哪個就業(yè)前景好?云計算就業(yè)前景不.....

    問答 日期:2023-08-20

  • uc3845,開關電源電流控制芯片uc3845uc3845,開關電源電流控制芯片uc3845

    開關電源電流控制芯片uc38452,UC3845開關電源七腳電壓是幾伏3,UC3845過流保護電路求助4,UC3845的特點5,基于UC3845雙管正激開關電源研究設計6,UC3845的基本參數1,開關電源電流控制芯片uc3845.....

    問答 日期:2023-08-20

  • pr11型噴漆機器人簡介pr11型噴漆機器人簡介

    按漆分,可分為粉噴機器人、油噴機器人、噴漆、釉噴機器人等。焊接入門機器人Welding機器人焊接入門機器人是從事焊接(包括切割和噴涂)的行業(yè)機器人,您好,自動噴涂設備目前使用機器人噴涂.....

    問答 日期:2023-08-20

  • 以太網交換機,以太網交換器以太網交換機,以太網交換器

    以太網交換器2,以太網交換機的概念3,以太網交換機如何使用4,什么是千兆以太網交換機5,請問什么是以太網交換機工業(yè)以太網交換機交換機工業(yè)交換機6,誰能給我詳細介紹一下以太網交換機1,以太網.....

    問答 日期:2023-08-20

  • 電腦卸載游戲數據恢復,蘋果卸載APP后數據恢復電腦卸載游戲數據恢復,蘋果卸載APP后數據恢復

    電腦卸載恢復的軟件怎么樣?那么,Bei卸載-2恢復?電腦卸載軟件只能重新下載恢復。可以用數據恢復software恢復,在下載過程中,系統(tǒng)會檢測到這個游戲之前已經安裝過,所以會自動恢復你之前的游戲.....

    問答 日期:2023-08-20