国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

什么是抽象類?

Shihira / 2863人閱讀

摘要:多態(tài)我們繼續(xù)用貓狗案例來解釋一下為什么要重寫抽象類中的所有抽象方法。

第四章 抽象類 4.1 抽象類概述(以下內(nèi)容可能有點煩 但是通俗易懂 簡直舒服)
我們創(chuàng)建一個動物類,并且在這個類中創(chuàng)建動物對象,但是當你提到動物類,你并不知道我說的是什么動物,只有看到了具體的動物,你才知道這是什么動物,所以說動物本身并不是一個具體的事物,而是一個抽象的事物。只有真正的貓,狗才是具體的動物,同理我們也可以推理不同的動物,他們的行為習慣應(yīng)該是不一樣的,所以我們不應(yīng)該在動物類中給出具體體現(xiàn),而是給出一個聲明即可。

在Java中一個沒有方法體的方法應(yīng)該定義為抽象方法 而類中如果有抽象方法,則必須定義為抽象類

4.2_1 抽象類的特點

A:抽象類和抽象方法必須用關(guān)鍵字abstract修飾

B:抽象類中不一定有抽象方法,但是有抽象方法的類一定是抽象類

C:抽象類不能實例化→不加 {}

D:抽象類的子類

? a:是一個抽象類。

? b:是一個具體類。這個類必須重寫抽象類中的所有抽象方法。(多態(tài))

我們繼續(xù)用貓狗案例來解釋一下為什么要重寫抽象類中的所有抽象方法。

“貓”和“狗”都是“動物”這個類的實體,比如動物都有eat() 這個方法,但是狗是吃肉的,貓是吃魚的。所以每個動物關(guān)于具體吃的方式是需要在子類中重寫的,不然的話,狗和貓不就一樣了嗎?

//Animal類

public abstract class Animal {

    public void sleep() {
        System.out.println("我趴著睡");
    }
    public abstract void eat(); 
}
//Dog類
public class Dog extends Animal {

    public Dog() {
        super();
    }
    
    @Override
    public void eat() {
        System.out.println("我實現(xiàn)了父類方法,狗吃肉");
    }
}
//Cat類
public class Cat extends Animal{
    public Cat() {
        super();
    }

    @Override
    public void eat() {
        System.out.println("我實現(xiàn)了父類方法,貓吃魚");
    }
}
//測試類
public class AnimalTest {
    public static void main(String[] args) {
        Animal a1 = new Dog();
        a1.sleep();
        a1.eat();
        System.out.println("-------------------------");
        Animal a2 = new Cat();
        a2.sleep();
        a2.eat();
    }
}
運行結(jié)果:
我趴著睡
我實現(xiàn)了父類方法,狗吃肉
-------------------------
我趴著睡
我實現(xiàn)了父類方法,貓吃魚

通過上面的例子我們可以看到,Dog和Cat兩個子類繼承Animal,兩者sleep()方法是一樣的均繼承于Animal類,而eat()方法由于特性不同則在Animal類中定義為抽象方法,分別在子類中實現(xiàn)。

4.2_2 抽象類的成員特點:

A:成員變量:既有變量,也有常量

B:構(gòu)造方法:有構(gòu)造方法

C:成員方法:既有抽象,也有非抽象

4.2_3 抽象類的幾個小問題

A:抽象類有構(gòu)造方法,不能實例化,那么構(gòu)造方法有什么用?

? 用于子類訪問父類數(shù)據(jù)的初始化

B:一個類如果沒有抽象方法,卻定義為了抽象類,有什么用?

? 為了不讓創(chuàng)建對象

C:abstract不能和哪些關(guān)鍵字共存

? a:final 沖突

? b:private 沖突

? c:static 無意義

結(jié)尾:

如果內(nèi)容中有什么不足,或者錯誤的地方,歡迎大家給我留言提出意見, 蟹蟹大家 !^_^

如果能幫到你的話,那就來關(guān)注我吧!

在這里的我們素不相識,卻都在為了自己的夢而努力 ?

一個堅持推送原創(chuàng)Java技術(shù)的公眾號:理想二旬不止

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/74772.html

相關(guān)文章

  • 關(guān)于抽象和接口的初步理解

    摘要:關(guān)于抽象類和接口的初步理解什么是抽象類抽象類是指在前加了關(guān)鍵字且存在抽象方法在類方法關(guān)鍵字前加了關(guān)鍵字的類。抽象類不能被直接實例化。抽象類中只定義或部分實現(xiàn)子類需要的方法。抽象類提供了具體實現(xiàn)的標準,而接口則是純粹的模板。 關(guān)于抽象類和接口的初步理解 什么是抽象類 抽象類是指在 class 前加了 abstract 關(guān)鍵字且存在抽象方法(在類方法 function 關(guān)鍵字前加了 ab...

    Julylovin 評論0 收藏0
  • PHP面向?qū)ο?/b>

    摘要:面向?qū)ο竺嫦驅(qū)ο蠡A(chǔ)面向?qū)ο笫裁词穷惥哂邢嗤瑢傩蕴卣骱头椒ㄐ袨榈囊幌盗袀€體的集合,類是一個抽象的概念。析構(gòu)函數(shù),當一個對象被銷毀前,自動調(diào)用。作用是為新克隆的對象進行初始化賦值對象序列化時,自動調(diào)用。使用抽象類的作用限制實例化。 面向?qū)ο?面向?qū)ο蠡A(chǔ) 面向?qū)ο?什么是類? 具有相同屬性(特征)和方法(行為)的一系列個體的集合,類是一個抽象的概念。 什么是對象? 從類中,拿到的具有具體...

    seanlook 評論0 收藏0
  • Java006-面向?qū)ο?繼承)

    摘要:抽象類的細節(jié)抽象類中是否有構(gòu)造函數(shù)有,用于給子類對象進行初始化。抽象方法目的僅僅為了不讓該類創(chuàng)建對象。抽象類和接口的區(qū)別抽象類只能被繼承,而且只能單繼承。抽象類中可以定義非抽象方法,子類可以直接繼承使用。抽象類使用的是關(guān)系。 定義 好處: 提高了代碼的復(fù)用性。 讓類與類之間產(chǎn)生了關(guān)系,提供了另一個特征多態(tài)的前提。 父類的由來: 其實是由多個類不斷向上抽取共性內(nèi)容而來的。 java中對于...

    nevermind 評論0 收藏0
  • 面向?qū)ο?什么、實例化、對象、抽象

    摘要:文字有點長,對于不想看文字的朋友,可以去這里看視頻,內(nèi)容和這個文字一樣的,視頻可能更好理解前面的課程里,我們已經(jīng)知道了什么是面向?qū)ο螅约懊嫦驅(qū)ο蟮膸讉€特征本節(jié)課,我們將把之前的理論知識搬進里之前女媧造人的例子中,女媧創(chuàng)造了各種設(shè)計方案在大 文字有點長,對于不想看文字的朋友,可以去這里看視頻,內(nèi)容和這個文字一樣的,視頻可能更好理解https://www.piqizhu.com/v/rm...

    bitkylin 評論0 收藏0
  • Java抽象與接口的區(qū)別

    摘要:很多常見的面試題都會出諸如抽象類和接口有什么區(qū)別,什么情況下會使用抽象類和什么情況你會使用接口這樣的問題。在討論它們之間的不同點之前,我們先看看抽象類接口各自的特性。抽象類抽象類是用來捕捉子類的通用特性的。 很多常見的面試題都會出諸如抽象類和接口有什么區(qū)別,什么情況下會使用抽象類和什么情況你會使用接口這樣的問題。本文我們將仔細討論這些話題。 在討論它們之間的不同點之前,我們先看看抽象類...

    Ethan815 評論0 收藏0

發(fā)表評論

0條評論

Shihira

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<