本文目錄一覽:
- 1、Java中的抽象類是什麼?
- 2、java中抽象類的存在的意義是什麼?
- 3、java編程抽象類技術如何實現?
- 4、java中什麼是抽象類
- 5、java抽象類
- 6、java中什麼是抽象類和抽象方法?創建有何作用?
Java中的抽象類是什麼?
使用了關鍵詞abstract聲明的類叫作“抽象類”。
如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。
如果一個類里包含了一個或多個抽象方法,類就必須指定成abstract(抽象)。“抽象方法”,屬於一種不完整的方法,只含有一個聲明,沒有方法主體
java中抽象類的存在的意義是什麼?
java中抽象類更利於代碼的維護和重用。\x0d\x0a抽象類往往用來表徵對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。具體分析如下:\x0d\x0a1.因為抽象類不能實例化對象,所以必須要有子類來實現它之後才能使用。這樣就可以把一些具有相同屬性和方法的組件進行抽象,這樣更有利於代碼和程序的維護。\x0d\x0a比如本科和研究生可以抽象成學生,他們有相同的屬性和方法。這樣當你對其中某個類進行修改時會受到父類的限制,這樣就會提醒開發人員有些東西不能進行隨意修改,這樣可以對比較重要的東西進行統一的限制,也算是一種保護,對維護會有很大的幫助。\x0d\x0a2.當又有一個具有相似的組件產生時,只需要實現該抽象類就可以獲得該抽象類的那些屬性和方法。\x0d\x0a比如學校又新產生了專科生這類學生,那麼專科生直接繼承學生,然後對自己特有的屬性和方法進行補充即可。這樣對於代碼的重用也是很好的體現。\x0d\x0a所以,Java中抽象類對於代碼的維護和重用有很好的幫助,也是Java面向對象的一個重要體現。
java編程抽象類技術如何實現?
java編程一直以來都是互聯網上使用比較廣泛的一種編程語言,所以我們今天就一起來了解一下java編程中的抽象類是如何來實現的,希望通過對本文的閱讀,大家能夠對java編程技術有更深刻的認識,下面昆明電腦培訓就開始今天的主要內容吧。
AbstractMap抽象類實現了一些簡單且通用的方法,本身並不難。但在這個抽象類中有兩個方法非常值得關注,keySet和values方法源碼的實現可以說是教科書式的典範。
抽象類通常作為一種骨架實現,為各自子類實現公共的方法。上一篇我們講解了Map接口,此篇對AbstractMap抽象類進行剖析研究。
Java中Map類型的數據結構有相當多,AbstractMap作為它們的骨架實現實現了Map接口部分方法,也就是說為它的子類各種Map提供了公共的方法,沒有實現的方法各種Map可能有所不同。
抽象類不能通過new關鍵字直接創建抽象類的實例,但它可以有構造方法。AbstractMap提供了一個protected修飾的無參構造方法,意味着只有它的子類才能訪問(當然它本身就是一個抽象類,其他類也不能直接對其實例化),也就是說只有它的子類才能調用這個無參的構造方法。
在Map接口中其內部定義了一個Entry接口,這個接口是Map映射的內部實現用於維護一個key-value鍵值對,key-value存儲在這個Map.Entry中。AbstractMap對這個內部接口進行了實現,一共有兩個:一個是可變的SimpleEntry和一個是不可變的SimpleImmutableEntry。
publicstaticclassSimpleEntryimplementsEntry,java.io.Serializable
實現了Map.Entry接口,並且實現了Serializable(可被序列化)。
它的方法比較簡單都是取值存值的操作,對於key值的定義是一個final修飾意味着是一個不可變的引用。另外其setValue方法稍微特殊,存入value值返回的並不是存入的值,而是返回的以前的舊值。需要重點學習的是它重寫的equals和hashCode方法。
publicstaticclassSimpleImmutableEntryimplementsEntry,java.io.SerializableSimpleImmutableEntry
定義為不可變的Entry,其實是事實不可變,因為它不提供setValue方法,在多個線程同時訪問時自然不能通過setValue方法進行修改。它相比於SimpleEntry其key和value成員變量都被定義為了final類型。調用setValue方法將會拋出UnsupportedOperationException異常。
它的equals和hashCode方法和SimpleEntry一致。
接下來查看AbstractMap抽象類實現了哪些Map接口中的方法。
publicintsize()
Map中定義了一個entrySet方法,返回的是Map.Entry的Set集合,直接調用Set集合的size方法即是Map的大小。
publicbooleanisEmpty()
調用上面的size方法,等於0即為空。
publicbooleancontainsKey(Objectkey)
這個方法的實現較為簡單,通過調用entrySet方法獲取Set集合的迭代器遍歷Map.Entry,與參數key比較。Map可以存儲為null的key值,由於key=null在Map中存儲比較特殊(不能計算hashCode值),所以在這裡也做了判斷參數key是否為空。
java中什麼是抽象類
由abstract修飾的方法叫抽象方法;由abstract修飾的類叫抽象類。抽象的類無法進行實例化,因為他不是具體存在的類,或者說這樣的類還不夠完善,不能直接使用new關鍵字調用其構造器生成該類的對象。我們可以使用abstract定義一個抽象類和抽象方法,示例代碼如下:
abstract class 類名
{
abstract int 方法名(int x,int y);
}
抽象的方法沒有方法體。需要注意的是在抽象類中既可以有抽象方法,也可以有普通方法,注意抽象方法是沒有方法體的(也就是方法後面是沒有大括號的)。凡是繼承這個抽象類的實體子類,都必須要實現這個抽象方法。
我們總結一下抽象類的特點:
(1)抽象類不能被實例化
(2)構造方法 和 static 方法不能是抽象的
(3)父類的抽象方法往往在子類中實現
(4)抽象類可以具有指向子類對象的對象引用
java抽象類
抽象類是指不允許被實例化的類;抽象方法是沒有方法體的方法。
1、抽象類可以不包括抽象方法,它反正不會去實例化,裡面的方法是不是抽象的沒有本質影響。
2、但是含有抽象方法的類絕不能被實例化,否則執行這個方法的時候,怎麼辦?
3、如果子類是非抽象的,那麼它就必須實現父類中的抽象方法;否則,它繼承來的抽象方法仍然沒有方法體,也是個抽象方法,此時就與“含有抽象方法的類必須是抽象類”相矛盾了。
比如說,我在紙上畫一個餅(抽象類),餅有個“吃到嘴裡沾一嘴芝麻”的方法。我可以在餅上畫幾個點假裝是芝麻,這時候“沾芝麻方法”就是個抽象方法,因為它不會真的掉芝麻;我也可以在餅上蘸點兒真芝麻,這時候“沾芝麻方法”就是個有實現的方法。但是用哪個方法都可以,因為沒人會去真的吃畫的餅吧。
但我要真的去照着這個圖烤一個餅(非抽象子類),那這個子類的“吃到嘴裡沾一嘴芝麻”的方法就必須有具體的實現。否則烤出來,一吃,沒芝麻啊!食客非上消協投訴不可。
java中什麼是抽象類和抽象方法?創建有何作用?
使用了關鍵詞abstract聲明的類叫作”抽象類”。如果一個類里包含了一個或多個抽象方法,類就必須指定成abstract(抽象)。”抽象方法”,屬於一種不完整的方法,只含有一個聲明,沒有方法主體。
java抽象類的作用:
1、通過繼承它實現多態,後期綁定,可以為將來要實現的東西做好接口,實現重用性。
2、接口就是更純粹的抽象類。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/185630.html