Java面向?qū)ο蠡A(chǔ)知識(shí)之抽象類(lèi)和接口
抽象類(lèi)(abstract):
抽象類(lèi)不能創(chuàng)建實(shí)例,它只能作為父類(lèi)被繼承。抽象類(lèi)是從多個(gè)具體類(lèi)中抽象出來(lái)的父類(lèi),它具有更高層次的抽象。從多個(gè)具有相同特征的類(lèi)中抽象出一個(gè)抽象類(lèi),以這個(gè)抽象類(lèi)作為其子類(lèi)的模板,從而避免了子類(lèi)的隨意性。
(1) 抽象方法只作聲明,而不包含實(shí)現(xiàn),可以看成是沒(méi)有實(shí)現(xiàn)體的虛方法
(2) 抽象類(lèi)不能被實(shí)例化
(3) 抽象類(lèi)可以但不是必須有抽象屬性和抽象方法,但是一旦有了抽象方法,就一定要把這個(gè)類(lèi)聲明為抽象類(lèi)
(4) 具體派生類(lèi)必須覆蓋基類(lèi)的抽象方法
(5) 抽象派生類(lèi)可以覆蓋基類(lèi)的抽象方法,也可以不覆蓋。如果不覆蓋,則其具體派生類(lèi)必須覆蓋它們
接口(interface):
(1) 接口不能被實(shí)例化
(2) 接口只能包含方法聲明
(3) 接口的成員包括方法、屬性、索引器、事件
(4) 接口中不能包含常量、字段(域)、構(gòu)造函數(shù)、析構(gòu)函數(shù)、靜態(tài)成員
抽象類(lèi)和接口的區(qū)別:
(1)抽象類(lèi)可以有構(gòu)造方法,接口中不能有構(gòu)造方法。
(2)抽象類(lèi)中可以有普通成員變量,接口中沒(méi)有普通成員變量
(3)抽象類(lèi)中可以包含靜態(tài)方法,接口中不能包含靜態(tài)方法
(4) 一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)抽象類(lèi)。
(5)接口可以被多重實(shí)現(xiàn),抽象類(lèi)只能被單一繼承
(6)如果抽象類(lèi)實(shí)現(xiàn)接口,則可以把接口中方法映射到抽象類(lèi)中作為抽象方法而不必實(shí)現(xiàn),而在抽象類(lèi)的子類(lèi)中實(shí)現(xiàn)接口中方法
抽象類(lèi)和接口的相同點(diǎn):
(1) 都可以被繼承
(2) 都不能被實(shí)例化
(3) 都可以包含方法聲明
(4) 派生類(lèi)必須實(shí)現(xiàn)未實(shí)現(xiàn)的方法
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
教你bat腳本一鍵配置java開(kāi)發(fā)環(huán)境
公司新入職一名員工,項(xiàng)目經(jīng)理讓我安排新人工作,首先需要對(duì)java開(kāi)發(fā)相關(guān)環(huán)境進(jìn)行配置安裝,但時(shí)常會(huì)因?yàn)榘惭b配置不到位或者操作錯(cuò)誤導(dǎo)致時(shí)間的浪費(fèi),所以在空余時(shí)間收集了一系列軟件的免安裝版本,感興趣的朋友一起看看吧2021-12-12
Java8通過(guò)Function獲取字段名的方法(獲取實(shí)體類(lèi)的字段名稱(chēng))
Java8通過(guò)Function獲取字段名。不用再硬編碼,效果類(lèi)似于mybatis-plus的LambdaQueryWrapper,對(duì)Java8通過(guò)Function獲取字段名相關(guān)知識(shí)感興趣的朋友一起看看吧2021-09-09
從內(nèi)存模型中了解Java final的全部細(xì)節(jié)
關(guān)于final關(guān)鍵字,它也是我們一個(gè)經(jīng)常用的關(guān)鍵字,可以修飾在類(lèi)上、或者修飾在變量、方法上,以此看來(lái)定義它的一些不可變性!像我們經(jīng)常使用的String類(lèi)中,它便是final來(lái)修飾的類(lèi),并且它的字符數(shù)組也是被final所修飾的。但是一些final的一些細(xì)節(jié)你真的了解過(guò)嗎2022-03-03
java類(lèi)中使用Jfreechart的簡(jiǎn)單實(shí)例
這篇文章介紹了java類(lèi)中使用Jfreechart的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下2013-08-08
深入理解Java8新特性之新日期時(shí)間API的應(yīng)用
自從 14 年發(fā)布 Java 8 以后,我們古老 java.util.Date 終于不再是我們 Java 里操作日期時(shí)間的唯一的選擇,其實(shí) Java 里的日期時(shí)間的相關(guān) API 一直為世猿詬病,今天我們來(lái)了解新的日期時(shí)間API是怎么使用吧2021-11-11
Java實(shí)現(xiàn)數(shù)據(jù)脫敏(Desensitization)的操作指南
數(shù)據(jù)脫敏是指通過(guò)對(duì)敏感數(shù)據(jù)進(jìn)行部分或完全隱藏處理,保護(hù)敏感信息在存儲(chǔ)和使用過(guò)程中的安全性,常見(jiàn)的應(yīng)用場(chǎng)景包括日志記錄、接口返回、報(bào)表展示、數(shù)據(jù)分析等,本文給大家介紹了Java實(shí)現(xiàn)數(shù)據(jù)脫敏(Desensitization)的操作指南,需要的朋友可以參考下2025-02-02

