文章編號:11217時間:2024-09-30人氣:
// 定義一個Shape接口
interface Shape {void draw();
}// 創建一個Rectangle類實現Shape接口
class Rectangle implements Shape {public void draw() {
System.out.println("繪制一個矩形");}
}// 創建一個Circle類實現Shape接口
class Circle implements Shape {public void draw() {System.out.println("繪制一個圓形");}
}
// 定義一個Animal父類
class Animal {private String name;public Animal(String name) {this.name = name;}public String getName() {return name;}
}// 創建一個Dog子類繼承Animal父類
class Dog extends Animal {public Dog(String name) {super(name);}public void bark() {System.out.println("汪汪!");}
}
接口和繼承是面向對象編程中的兩個基本概念。它們有著不同的目的和實現方式,在不同的情況下使用。接口用于定義標準和合約,而繼承用于創建父類和子類之間的關系。理解它們之間的區別對于創建可維護且可擴展的代碼非常重要。
包指的是,你可以使用包里面提供的類,你只有import了一個包才能在你自己的類里面使用包中的類。 繼承完全不是你說的引用java內部的定義的類,你要明白java的面向對象的思想,什么是聚合,什么是繼承,這里就簡單點說下繼承吧,以人類為例子:人類是一個類,女人是人類的一個子類人類里面有一個方法,吃飯(),女人繼承自人類,所以女人繼承了人類的這些特質,所以女人也可以吃飯(),但女人有自己的特點,她會生孩子,所以女人有了自己的方法 生孩子()。 這個簡單的例子就說明了什么是繼承。 我強烈建議你去看thinking in java,好好把面向對象的思想弄清楚,不要總看一些國內的破教程,沒有掌握java編程思想,很容易陷入誤區,有很多人覺得初學者不要看thinking in java,這是非常錯誤的!基礎不打好,后面會走很多彎路,你如果在繼承,接口等面向對象的概念上很模糊的話,強烈建議你去把這本書找來看看,里面說的非常清楚,學java沒看過這本書等于你沒學java
從本質上觀察接口實現和類繼承,這里“繼承”一詞不包含繼承接口。 繼承,本質是父類有的,子類也有。 或者說,繼承,主要目的是為了代碼重用。 接口,又稱協議,約定。 接口本身并不定義任何成員,它只約定一系列方法的方法名和形參、返回類型(他們的組合叫方法簽名),意思就是提供一系列抽象的功能服務。 一個類實現了一個接口,意味著這個類承諾他要遵守這個接口所定義的約定,提供這個接口所要求的全部功能。 而調用方只需知道這個對象遵守了哪個接口的約定,能提供什么樣的方法/功能,而不必知道關心這個對象屬于哪個類型的。 這個叫多態。 從名稱上看,接口實現和類繼承好像都叫“繼承”,但一個是多態,一個是代碼重用,幾乎是一個問題的兩個極端。 而抽象類則是介乎兩者的折衷,一方面他限制了子類的類型(因為C#只能單繼承),重用了自己的代碼,另一方面,它多少又定義了一些抽象的方法簽名,保證它的子類能提供某種功能。
理論上:類只能單繼承,接口可以多繼承(接口應該叫實現);實踐上:我們說類的繼承一般繼承的是事物的屬性,如:姓名,年齡,性別 等,而接口的繼承(或者說實現)一般是繼承事物的行為,如:行走,飛翔,游泳(這比較抽象,在一般項目中大部分是指對某事物的增刪改查等操作)總之,單繼承描述了“is a”的關系,即“子is a父”;多繼承描述了“can do”的關系,即“子can do父”。 這是我的筆記珍藏,希望對你有啟發。
繼承Extends:繼承是子類從父類繼承特征和行為,子類具有父類的實例域和方法,或從父類繼承方法,使得子類具有父類相同的行為。 繼承關系表示“is-a”關系,如食草動物類繼承自動物類。 實現implement:在Java中,類實現接口時使用implement關鍵字。 類只能實現接口,而接口可以繼承其他接口。 抽象類:抽象類使用abstract關鍵字修飾,包含零個或多個抽象方法。 抽象類可能沒有抽象方法,但有抽象方法的類必須是抽象類。 抽象類不能實例化對象,但除了不能實例化外,其他功能仍然存在。 子類必須實現抽象類中的抽象方法,或保持抽象類為抽象類。 接口:接口是一個抽象類型,包含抽象方法的集合,沒有構造方法、靜態代碼塊和靜態方法。 接口默認包含public和abstract修飾符,方法默認是public和abstract。 接口可以繼承其他接口,但類只能實現一個抽象類。 接口與抽象類的區別:接口比抽象類更簡潔、專注,僅包含抽象方法和靜態變量,無構造方法、靜態代碼塊和靜態方法等,實現都在實現類中完成。 抽象類更臃腫,既有抽象方法也有普通方法。 接口允許多繼承,一個類可以實現多個接口,一個接口也可以繼承多個接口。 接口更靈活,適用于擴展功能,而繼承可能導致功能冗余。 抽象類與接口的關聯:抽象類可以實現接口,但可以不實現接口方法,而接口不能繼承抽象類。 二者都不能實例化對象。
首先的話,在 Java 中應該說“擴展”(extend)而不是“繼承”(inherit),盡管知道它實現上就是C++那種繼承,但邏輯上是不完全相同的。 再考慮到接口即協議,對接口的擴展,或是說對協議的擴展,實際上就包括了對其公用方法的擴展以及對其定義的擴展兩個方面,其中擴展接口定義實際上即為對協議添加更多的約束,在減少了其可能包含的類的種類的同時也給了這些類更清晰的定義,也就允許用戶基于這更清晰的定義做出更多的操作了。 所以呢,實際類的擴展實際上和繼承是相同的,子類確實繼承了父類的實現,但接口的擴展則只會獲取到父接口的方法聲明,繼承的意味并不明顯,更多的實際上在于對其原協議的擴展,因此應將子接口和父接口間的關系視為擴展而不單單是繼承其實就是多去思考為什么在Java這叫擴展不叫繼承,很多問題就迎刃而解了
內容聲明:
1、本站收錄的內容來源于大數據收集,版權歸原網站所有!
2、本站收錄的內容若侵害到您的利益,請聯系我們進行刪除處理!
3、本站不接受違法信息,如您發現違法內容,請聯系我們進行舉報處理!
4、本文地址:http://m.sycxjdsbhs.com/article/e04f37726204468b60a7.html,復制請保留版權鏈接!
OverlayIcon64.dll是Windows系統中一個重要的DLL文件,負責顯示文件的重疊圖標,如果該文件丟失或損壞,您可能會在計算機上遇到各種問題,本文將介紹OverlayIcon64.dll丟失或損壞的常見問題,并提供詳細的解決方法,OverlayIcon64.dll丟失或損壞的常見問題文件或文件夾的圖標無法正常顯示某些應用...。
最新資訊 2024-09-29 14:44:00
終端窗口是一個命令行界面,可用于與您的計算機進行交互,它可以用于各種任務,例如運行命令、查看文件和文件夾,以及安裝軟件,要在VisualStudioCode中打開終端窗口,請執行以下步驟,單擊窗口左下角的終端圖標,或者,您可以使用以下鍵盤快捷鍵,Windows,Ctrl,`macOS,Cmd,`終端窗口將打開在VisualStudio...。
本站公告 2024-09-28 15:23:03
Eclipse3.4是一款功能強大的集成開發環境,IDE,,廣泛用于Java開發,它提供了豐富的功能和優勢,可以提升開發者的效率和生產力,以下是Eclipse3.4中一些最顯著的功能,增強的代碼編輯器Eclipse3.4的代碼編輯器以其強大的語法高亮、代碼自動補全和重構工具而著稱,它還支持代碼折疊、塊選擇和語法驗證,讓開發者可以更高效...。
最新資訊 2024-09-24 14:22:08
按鈕,是,當您使用`history.back,`方法返回頁面時,瀏覽器前進按鈕將變為可用,因為它現在可以向前導航到當前頁面,我可以使用`history.back,`方法在不同的域之間導航嗎,否,`history.back,`方法只能在當前域的歷史記錄中導航,如果您需要在不同的域之間導航,您需要使用`window.location...。
本站公告 2024-09-13 18:31:02
100210020200修改后的訂單表滿足2NF,因為每一列都與主鍵,訂單編號、客戶編號,有直接關系,第三范式,3NF,定義,表中的每一列都必須直接依賴于主鍵,不能傳遞依賴于其他列,要求,表滿足第二范式,表中不存在傳遞依賴,即每一列都必須直接依賴于主鍵,而不能通過中間列間接依賴,例子,學生表,不滿足3NF,學號姓名班級考試成績班主任姓...。
最新資訊 2024-09-13 10:28:30
引言VB,VisualBasic,是一種面向對象的編程語言,廣泛用于創建桌面應用程序、網站和移動應用程序,盡管VB相對容易學習和使用,但在編程過程中仍有一些常見的陷阱和挑戰,為了幫助VB開發人員避免這些錯誤,本文將深入探討一些常見的陷阱和提供避免它們的實用技巧,常見的陷阱1.變量聲明不當陷阱,未聲明或錯誤聲明變量會導致編譯錯誤或運行時...。
互聯網資訊 2024-09-12 12:10:47
Python中的sort,函數是一個強大的工具,它允許您按升序或降序對列表進行排序,默認情況下,sort,函數使用內建的順序規則對元素進行排序,但是,您還可以提供一個自定義的比較函數來指定自己的排序規則,語法sort,函數的語法如下,```list.sort,key=None,reverse=False,```list,待排序的...。
技術教程 2024-09-09 00:14:47
body,font,family,Arial,Helvetica,sans,serif,font,size,16px,line,height,1.6em,h1,font,size,24px,margin,bottom,10px,h2,font,size,20px,margin,bottom,5px,ul,list,style,t...。
本站公告 2024-09-08 10:08:52
replace,方法用于在字符串中查找并替換匹配的子字符串,它接受兩個參數,要查找的子字符串和替換它的字符串,conststr=HelloWorld,constnewStr=str.replace,World,Universe,console.log,newStr,Output,HelloUniversereplace,方...。
互聯網資訊 2024-09-06 22:24:22
對于任何有抱負的程序員來說,Java都是一門必備語言,憑借其廣泛的應用領域和堅如磐石的語法,Java為各種項目提供了堅實的基礎,如果你已經掌握了Java的基礎知識,并且渴望提升你的技能,那么我們這里有一些免費的視頻教程,可以幫助你超越初學者水平,免費Java視頻教程1.Java教程,Java編程基礎,EdurekaEdureka的這個...。
互聯網資訊 2024-09-06 13:07:11
近年來,河南安陽市關于鬧鬼的傳聞甚囂塵上,引起了廣泛關注,有人聲稱親眼目睹了靈異事件,也有人對此嗤之以鼻,認為只是謠言和迷信,那么,河南安陽鬧鬼傳聞到底是真是假呢,歷史淵源安陽是中國八大古都之一,有著悠久的歷史文化,相傳,在殷商時期,安陽曾是甲骨文的起源地,埋藏著許多帝王將相的陵墓,這些因素為安陽增添了一層神秘色彩,也為后世留下了一些...。
互聯網資訊 2024-09-05 01:11:24
在北京這座繁華的都市中,流傳著許多關于午夜公交車的靈異事件,這些故事令人毛骨悚然,讓許多人都不敢在深夜乘坐公交車,這些傳聞究竟是真是假,還是僅僅是人們的以訛傳訛呢,午夜公交車傳說午夜公交車傳說最早源于20世紀80年代,當時,北京市發生了一系列離奇的公交車事故,這些事故大多發生在深夜,而且都離奇古怪,其中最著名的一個事件發生在1983年...。
互聯網資訊 2024-09-03 01:06:40