java 抽象类 final_Java8 final关键字与抽象类
final關(guān)鍵字 最終無法改變的
final修飾的變量如果是成員變量沒有默認(rèn)初始值,如果修飾局部變量可以只聲明不初始化
final 修飾類 方法 變量
final 修飾類:不能被繼承 不能有子類
final 修飾方法:不能被覆蓋
final 修飾變量:一個(gè)常量
當(dāng)使用的數(shù)據(jù)不變時(shí),定義閱讀性強(qiáng)的名稱來表示該數(shù)據(jù)
被final修飾的變量,名稱規(guī)范:所有字母大寫,如果由多個(gè)字母組成,通過“-”分割
public static final int NUM=1;//全局變量
抽象類
描述一個(gè)事物
都沒有足夠信息將這個(gè)事物稱為抽象事物
關(guān)鍵字 abstract
1.抽象方法一定定義在抽象類中,都要用abstract修飾
abstract class Quan{
abstract jiao();//不寫方法體 抽象類括號后直接結(jié)束語句
}
2.抽象類不能實(shí)例化,不能通過new關(guān)鍵字創(chuàng)建對象
只有子類覆蓋所有的父類方法時(shí),子類具體化,子類才可以創(chuàng)建對象
(如果沒有覆蓋所有的抽象方法。子類因?yàn)槔^承,還是抽象類無法實(shí)例化)
abstract class Quan{
abstract void jiao();
}
class dog extends Quan{
void jiao() {
System.out.println("汪");
}}
class wolf extends Quan{
void jiao
() {
System.out.println("jiao");
}}
public class AbstractDemo {
public static void main(String[] args) {
dog d=new dog();
d.jiao();
}}
抽象類也是不斷向上抽取而來的
抽取了方法聲明,而不是方法體現(xiàn)
方法體現(xiàn)由各子類詳細(xì)聲明
問題總結(jié)
抽象類中有構(gòu)造方法嗎?
有 抽象類的構(gòu)造函數(shù)雖然不能給抽象類對象實(shí)例化,因?yàn)槌橄箢惒荒軇?chuàng)建對象
但是抽象類有子類,它的構(gòu)造方法可以通過super();方法實(shí)例化
抽象類和一般類的異同點(diǎn):
共同點(diǎn):抽象類和一般類都是可以進(jìn)行屬性和行為的描述
不同點(diǎn):抽象類描述不具體事物,一般類描述事物具體
代碼上的不同:
抽象類可以定義抽象方法,一般類不行
一般類可以通過實(shí)例化創(chuàng)建對象,抽象類不行
抽象類一定要作為父類嗎?
是的,必須使用子類覆蓋父類所有抽象方法,子類才能實(shí)例化 調(diào)用方法
抽象類可以不定義抽象方法嗎?
可以 運(yùn)用抽象類定義非抽象方法目的,讓方法無法被對象調(diào)用
抽象關(guān)鍵字abstract不能與哪些關(guān)鍵字共存?
final 因?yàn)閒inal修飾的類不能有子類
private 因?yàn)樗接谢療o法覆蓋
static 靜態(tài)后可以直接通過類名調(diào)用,抽象方法被調(diào)用沒有意義
總結(jié)
以上是生活随笔為你收集整理的java 抽象类 final_Java8 final关键字与抽象类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 土豆哪里挖 如何挖出最新鲜的土豆?
- 下一篇: java美元兑换,(Java实现) 美元