Java封裝、繼續、多態三年夜特點的懂得。本站提示廣大學習愛好者:(Java封裝、繼續、多態三年夜特點的懂得)文章只能為提供參考,不一定能成為您想要的結果。以下是Java封裝、繼續、多態三年夜特點的懂得正文
起首先簡略的說一下其3年夜特征的界說:
封裝:隱蔽對象的屬性和完成細節,僅對外地下接口,掌握在法式中屬性的讀和修正的拜訪級別。將籠統獲得的數據和行動(或功效)相聯合,構成一個無機的全體,也就是將數據與操作數據的源代碼停止無機的聯合,構成“類”,個中數據和函數都是類的成員。封裝的目標是加強平安性和簡化編程,應用者不用懂得詳細的完成細節,而只是要經由過程內部接口,一特定的拜訪權限來應用類的成員。封裝的根本請求是: 把一切的屬性公有化,對每一個屬性供給getter和setter辦法,假如有一個帶參的結構函數的話,那必定要寫一個不帶參的結構函數。在開辟的時刻常常要對曾經編寫的類停止測試,所以在有的時刻還有重寫toString辦法,但這不是必需的。
繼續:經由過程繼續完成代碼復用。Java中一切的類都是經由過程直接或直接地繼續java.lang.Object類獲得的。繼續而獲得的類稱為子類,被繼續的類稱為父類。子類不克不及繼續父類中拜訪權限為private的成員變量和辦法。子類可以重寫父類的辦法,及定名與父類同名的成員變量。但Java不支撐多重繼續,即一個類從多個超類派生的才能。在開辟中盡可能削減繼續關系,如許做是為了把法式的耦合度下降。
多態:多態又分為設計時多態和運轉時多態,例如重載又被稱為設計時多態,而關於籠罩或繼續的辦法,JAVA運轉時體系依據挪用該辦法的實例的類型來決議選擇挪用哪一個辦法則被稱為運轉時多態。總而言之,面向對象的設計的典范特色就是繼續,封裝和多態,這些特色也是面向對象之所以能如斯風行的症結地點。
封裝
java中類的屬性的拜訪權限默許值不是private,要想隱蔽該屬性的辦法,便可以加private潤飾符,來限制只可以或許在類的外部停止拜訪。
關於類中的公有屬性,要對其給出一對辦法(getXXX,setXXX())拜訪公有屬性,包管對公有屬性的操作和平安性。
辦法的封裝,該地下的地下,該隱蔽的隱蔽。
java的繼續
繼續,是對有著配合特征的多類事物,停止再籠統成一個類。
java中的繼續要應用extends症結字,而且java中指許可單繼續,也就是一個類只能有一個父類。
結構辦法不克不及被繼續。
java辦法中的籠罩
子類中有和父類中可拜訪的同名同前往同參數列表的辦法時,就會籠罩從父類繼續來的辦法。
super()症結字
super(),表現在子類的結構辦法挪用父類的結構辦法時,super()也只能在結構辦法中的第一句。
java中的多態
有兩種多態的機制:編譯時多態、運轉時多態
1、辦法的重載:重載是指統一類中有多個同名的辦法,但這些辦法有著分歧的參數。,是以在編譯時便可以肯定究竟挪用哪一個辦法,它是一種編譯時多態。
2、辦法的籠罩:子類可以籠罩父類的辦法,是以異樣的辦法會在父類中與子類中有著分歧的表示情勢。在java說話中,基類的援用變量不只可以指向基類的實例對象,也能夠指向子類的實例對象,異樣,接口中的援用變量也能夠指向其完成類的實例對象。
public class A { public String show(D obj) { return ("A and D"); } public String show(A obj) { return ("A and A"); } } public class B extends A{ public String show(B obj){ return ("B and B"); } public String show(A obj){ return ("B and A"); } } public class C extends B{ } public class D extends B{ } public class Test { public static void main(String[] args) { A a1 = new A(); A a2 = new B(); B b = new B(); C c = new C(); D d = new D(); System.out.println("1--" + a1.show(b)); System.out.println("2--" + a1.show(c)); System.out.println("3--" + a1.show(d)); System.out.println("4--" + a2.show(b)); System.out.println("5--" + a2.show(c)); System.out.println("6--" + a2.show(d)); System.out.println("7--" + b.show(b)); System.out.println("8--" + b.show(c)); System.out.println("9--" + b.show(d)); } } 1--A and A 2--A and A 3--A and D 4--B and A 5--B and A 6--A and D 7--B and B 8--B and B 9--A and D
當超類對象援用變量援用子類對象時,被援用對象的類型而不是援用變量的類型決議了挪用誰的成員辦法,然則這個被挪用的辦法必需是在超類中界說過的,也就是說被子類籠罩的辦法。
這我們用一個例子來講明這句話所代表的寄義:a2.show(b);
這裡a2是援用變量,為A類型,它援用的是B對象,是以依照下面那句話的意思是說有B來決議挪用誰的辦法,所以a2.show(b)應當要挪用B中的show(B obj),發生的成果應當是“B and B”,然則為何會與後面的運轉成果發生差別呢?這裡我們疏忽了前面那句話“然則這兒被挪用的辦法必需是在超類中界說過的”,那末show(B obj)在A類中存在嗎?基本就不存在!所以這句話在這裡不實用?那末豈非是這句話毛病了?非也!其實這句話還隱含這這句話:它依然要依照繼續鏈中挪用辦法的優先級來確認。所以它才會在A類中找到show(A obj),同時因為B重寫了該辦法所以才會挪用B類中的辦法,不然就會挪用A類中的辦法。
以上所述是小編給年夜家引見的Java封裝、繼續、多態三年夜特點的懂得,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!