Java基礎:抽象類和接口
導語:Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++裏難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。下面我們來看看抽象類和接口,希望對大家有所幫助。
第一節 抽象類
一.包含抽象方法的類;
抽象方法:只有方法聲明,沒有方法實現的方法稱為“抽象方法”;
抽象類是對問題領域進行分析後得出的抽象概念。
抽象類和抽象方法必須使用abstract修飾。
123 | <code>抽象類的語法,規則。 定義抽象類有三種情況:直接定義一個抽象類;或繼承一個抽象類,但是沒有完全實現父類包含的抽象方法;或實現一個接口,但沒有完全實現接口中的抽象方法。 </code> |
二rac關鍵字
abstract不能用來修飾成員變量和構造方法,即沒有抽象變量和抽象構造方法的説法。abstract修飾的方法必須被其子類重寫才有意義,否則這個方法永遠不會有方法體,因此抽象方法不能定義為private,即為private和abstract不能同時修飾方法,abstract也不能和static,final或native同時修飾同一方法。
三.使用抽象類
抽象類不能實例化(不能new 父類),只能被當成父類來繼承。作為子類的模板。
實例化它的子類,父類引用子類。
第二節 接口 interface
接口中的所有方法都是抽象方法
一.a.接口;定義了某一批類所需要遵守的.公共行為規範,只規定這批類必須提供的某些方法,而不是提供任何實現。體現了規範和實現的分離。是讓系統的各個模塊間面向接口耦合,是一種鬆耦合設計,降低模塊間的耦合,增強系統的可擴展性和可維護性。
b.定義一個接口,java只支持單一繼承,不支持多重繼承。java允許一個類實現多個接口,使得程序更加靈活、易於擴展。
c.一個接口可以繼承多個父接口,但接口只能繼承接口,不能繼承類;在接口裏可以包含靜態常量,抽象方法,內部類,內部接口以及枚舉定義,java8之後允許定義默認方法,類方法;接口和類的默認訪問符不同,接口體內定義的常量,方法等默認為public,可省略,即為接口定義的常量或方法不寫public,其訪問權依然是public。
d.實現一個接口,(關鍵字implements)implements是一個類,實現一個接口用的關鍵字,它是用來實現接口中定義的抽象方法。實現一個接口,必須實現接口中的所有方法;但沒有完全實現接口中包含的抽象方法的類是抽象類
二.接口的繼承
注意點:a.和抽象類一樣,接口是一種更加抽象的類結構,不能對接口直接實例化;可以聲明接口變量,並且用接口指向當前接口實現類的實例。使用接口指向當前接口實現類的實例對象,這種方式也是多態性的體現。
一個接口可以繼承多個接口,這和類的繼承是不同的;接口體現的是一種規範;抽象類體現的是一種模板式設計。接口中定義的變量都是常量;抽象類中的定義的變量與普通類一樣,默認是缺省。
三ements和extends的區別:
1234 | <code><code>Extends,表示對父類的繼承,可以實現父類,也可以調用父類初始化 this nt()。而且會覆蓋父類定義的變量或者函數。 Implements,表示對接口的實現,接口通過關鍵字 interface 進行定義。eg: public class S implements F,在接口F中對方法進行聲明,在類S中對該方法進行實現。 </code></code> |
四.面向接口編程
123 | <code><code><code>面向接口編程和麪向對象編程的關係: 首先,面向接口編程和麪向對象編程並不是平級的,它並不是比面向對象編程更先進的一種獨立的編程思想,而是附屬於面向對象思想體系,屬於其一部分。或者説,它是面向對象編程體系中的思想精髓之一。 </code></code></code> |
什麼是面向接口編程:
譬如有一個Animal接口和一個NightWorking接口,公雞實現了Animal接口,貓頭鷹實現了Animal接口和NightWorking接口,還有一個實現了NightWorking接口的路燈,在Animal的範疇下,我們可以稱公雞和貓頭鷹是同類事物,而在NightWorking的範疇下,我們可以稱貓頭鷹和路燈是同類事物,這裏就是説對於animal接口來説,要看種類的話路燈是不會實現animal裏面的NightWorking接口的,但是要看是否有想要的功能實現NightWorking接口的話,貓頭鷹和路燈都同一事物。 不是面向實現,而是面向接口。
12 | <code><code><code><code>特點:可維護性,可擴展性 </code></code></code></code> |
第三節 instanceof 關鍵字
instanceof是Java的一個二元操作符,和==,>,<是同一類東東。由於它是由字母組成的,所以也是Java的保留關鍵字。
123 | <code><code><code><code><code>作用:鑑別對象的類型。 語法: 引用類型變量 instanceof 引用類型 示例:String a=“abc”; Object b=“abc”; 判斷→tln(“是否是object的實例”+(b instanceof object)); </code></code></code></code></code> |
-
新手學習Java最高效的10個計劃
對於新手來説學習Java如同堵天書,下面是本站小編收集的關於新手學習Java最高效的10個計劃,希望可以為您的學習帶來幫助!計劃一:瞭解未來技術發展方向兩耳不聞窗外事,在如今是不合適的,尤其是在瞬息萬變的互聯網時代,作為一個開發者技術跟不上可以去專研,思想要跟不上,...
-
java中length和length()的區別
泉水,奮鬥之路越曲折,心靈越純潔。以下是小編為大家搜索整理了java中length和length()的區別,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!length是屬性,一般集合類對象擁有的屬性,取得集合的大小。例如:數組th就是取得數組的長度。length()是...
-
講述java讀取properties文件的方法
講述java讀取properties文件的方法1.不在項目中讀取:Propertiesproperties=newProperties();BufferedReaderread=newBufferedReader(newInputStreamReader(newFileInputStream("文件的.路徑"),"utf-8"));(read);propertiesroperty("那個文件的key")2.在項目中讀...
-
java面試自我介紹範文
引導語:Java面試自我介紹應以突顯自我能力為主,表現出與眾不同的才幹和學識。以下是本站小編分享給大家的2017java面試自我介紹範文,歡迎閲讀!範文一我叫趙,我的同學更都喜歡稱呼我的英文名字,叫,六月的意思,是君的諧音。我來自安徽的市,在21年我以市全市第一名的成績...