Java超詳細(xì)講解抽象類的原理與用法
1. 抽象類是什么
?給大家上一篇小作文,看完這個,你就理解了什么叫做抽象類
在面向?qū)ο蟮母拍钪校械膶ο蠖际峭ㄟ^類來描繪的,但是反過來,并不是所有的類都是用來描繪對象的,
如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。
?思考一下抽象類和類在功能上什么區(qū)別
因?yàn)槌橄箢愂菦]有足夠的信息去描繪一個具體的對象的,所以抽象類也就不能實(shí)例化對象
除此之外,抽象類的其它功能都是存在的,成員變量,成員方法,構(gòu)造方法的訪問方法和類一樣。
?既然這個抽象不能實(shí)例化對象,那么該如何使用抽象類呢
既然不能實(shí)例化對象,那么抽象類就只能被繼承,才可以使用。
但是使用時,又要注意,因?yàn)槔^承,父類是抽象的,所以父類包含子類集合的常見方法不能使用
一句話說明抽象類,那就是,不完整的類,只能繼承用
2 抽象類的語法
(1)使用abstract修飾的方法,叫抽象方法
(2)包含抽象方法的類,必須設(shè)計(jì)為抽象類,這個類也必須使用abstarct修飾
這個方法沒有具體實(shí)現(xiàn),又有abstract修飾,那么把這個方法叫抽象方法
abstract class Shape {
//抽象方法
public abstract void draw();
}3 抽象類都有什么特性
(1)抽象類是不能進(jìn)行實(shí)例化的
看這段代碼就報(bào)錯了

(2)抽象類中,可以有和普通類一樣的成員變量,成員方法,也可以有構(gòu)造方法
抽象類和普通類不一樣的是,抽象類不能進(jìn)行實(shí)例化

(3)抽象類不可以被實(shí)例化,但可以被繼承
可以這么認(rèn)為,抽象類的作用是,用來被繼承的

(4)抽象方法的訪問限定符不能是private,并且抽象方法也不能
被static和final所修飾,這是因?yàn)樽宇惱^承要重寫
注意:抽象方法沒有加訪問限定符時,默認(rèn)是public



(5)當(dāng)一個普通類繼承這個抽象類之后,如果這個抽象類中包含抽象方法,
那么需要重寫這個抽象方法,否則代碼會報(bào)錯

(6)如果一個抽象類?A繼承另一個抽象類B,
那么此時這個抽象類A可以不重寫抽象類B中的抽象方法
我們先看這個,一個抽象方法,重寫一次

那再寫一個抽象方法,會不會報(bào)錯?答案是會報(bào)錯

所以我們需要再重寫一次,繼承這里才不會報(bào)錯

?但這個每寫一個抽象方法,就要重寫一次,是不是比較麻煩,有什么好的方法嗎?
那就可以把繼承這里也寫成抽象類。
寫成抽象類后,就不用一次一次重寫那么麻煩了
abstract class Shape {
public int a;
public static int b;
public void func() {
}
//抽象方法
public abstract void draw();
public abstract void draw2();
abstract class Rect extends Shape{
}
}所以,兩個都是抽象類后,就不用重寫就可以繼承了
(7)抽象類中不一定包含抽象方法,但是有抽象方法的類一定是抽象類
4 抽象類是干什么的
比較通俗的說就是,抽象類是給程序員用來,防止出錯的,相當(dāng)于報(bào)警器。
?為什么會這么說呢
比如這個不應(yīng)該由父類完成, 而應(yīng)由子類完成. 此時如果不小心用成父類了,
使用普通類編譯器是不會報(bào)錯的.
但是父類是抽象類就會在實(shí)例化的時候提示錯誤, 讓我們發(fā)現(xiàn)錯誤,進(jìn)行修改
所以說在合適的地方選用抽象類是比較有意義的
到此這篇關(guān)于Java超詳細(xì)講解抽象類的原理與用法的文章就介紹到這了,更多相關(guān)Java抽象類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring單元測試下模擬rabbitmq的實(shí)現(xiàn)
這篇文章主要介紹了spring單元測試下模擬rabbitmq的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
Java學(xué)習(xí)之如何進(jìn)行JSON解析
JSON(JavaScript?Object?Notation)是一種輕量級的數(shù)據(jù)交換格式,它算是JavaScript語言的一部分,與XML一樣都可以用于數(shù)據(jù)的存儲和傳輸,本文講給大家介紹如何進(jìn)行JSON解析,需要的朋友可以參考下2023-12-12
org.apache.ibatis.binding.BindingException異常報(bào)錯原因以及詳細(xì)解決方案
這篇文章主要給大家介紹了關(guān)于org.apache.ibatis.binding.BindingException異常報(bào)錯原因以及詳細(xì)解決方案的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02

