欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中的抽象類和接口你了解嗎

 更新時間:2022年02月27日 16:49:27   作者:洛語言  
這篇文章主要為大家詳細介紹了Java中的抽象類和接口,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

抽象類

什么是抽象類?

在這里插入圖片描述

類和類之間有共同特征,將這些共同特征提取出來進一步抽象,就形成了抽象類。由于類是不存在的,所以抽象類無法創(chuàng)建對象。

抽象類屬于什么類型?

抽象類也屬于引用數(shù)據(jù)類型。

抽象類怎么定義?

[修飾符列表] abstract class 類名{
	類體;
}

抽象類是干什么的?

抽象類無法實例化,無法創(chuàng)建對象,所以抽象類是用來被子類繼承的,抽象類中構(gòu)造方法可以供子類使用。

final與abstract是對立的兩個關(guān)鍵字,不能聯(lián)合使用。

什么是抽象方法?

抽象方法表示沒有實現(xiàn)的方法,沒有方法體的方法。

例如:

public abstract void doSome();

特點一:抽象方法沒有方法體,以分號結(jié)尾。

特點二:抽象方法前面的修飾符列表必須有abstract關(guān)鍵字。

特點三:抽象類中可以沒有抽象方法,但抽象方法只能出現(xiàn)在抽象類中和接口中。

易錯:并不是所有沒有方法體的方法都叫做抽象方法!

非抽象類繼承抽象類

以下面代碼為例:

代碼

//抽象類
public abstract class Animal {
    //抽象方法
    public abstract void move();
}
//非抽象類繼承抽象類
class Bird extends Animal{
}

這樣寫有問題嗎?有問題!

編譯器會給出以下結(jié)果:

在這里插入圖片描述

抽象方法只能出現(xiàn)在抽象類中,當Bird類繼承Animal類之后,會將抽象方法也繼承過去,所以我們需要在Bird類中通過重寫的方式將抽象方法實現(xiàn)了。

代碼

//抽象類
public abstract class Animal {
}
//非抽象類繼承抽象類
class Bird extends Animal{
	//向上轉(zhuǎn)型
    Animal a = new Bird();
}

這樣寫有問題嗎?沒有問題!

a的類型是Animal,是抽象的,所以這就是面向抽象編程,降低程序的耦合度,提高程序的擴展性。

抽象類總結(jié)

  • 抽象類通過在class前面加abstract來定義。
  • 抽象類是無法實例化的,無法創(chuàng)建對象的,所以抽象類是用來被子類繼承的。
  • final與abstract是對立的,不能聯(lián)和使用。
  • 抽象類子類可以是抽象類,也可以是非抽象類。
  • 抽象類雖然無法實例化,但是抽象類有構(gòu)造方法,可以供子類使用。
  • 抽象類中不一定有抽象方法,但是抽象方法只能出現(xiàn)在抽象類和接口中。
  • 抽象方法的定義:public abstract void doSome();
  • 一個非抽象類繼承抽象類,必須將抽象類中的抽象方法進行覆蓋。

接口

接口的基礎(chǔ)語法

  • 接口也是一個"引用數(shù)據(jù)類型",編譯之后也會形成一個class字節(jié)碼文件。
  • 接口是完全抽象的(抽象類是半抽象的)。
  • 接口的語法如下:
    [修飾符列表] interface 接口名{......}//修飾符列表可以不寫
  • 接口支持多繼承,一個接口可以繼承多個接口。
  • 接口中只包含兩部分內(nèi)容:常量和抽象方法。
  • 接口中所有元素都是public修飾的,都是公開的。
  • 接口中定義抽象方法時:public abstract修飾符可以省略。
  • 接口中定義常量時:public static final修飾符可以省略。

接口的實現(xiàn)

類和類之間存在繼承,接口和類之間存在類似的關(guān)系,叫做實現(xiàn)。

接口實現(xiàn)的關(guān)鍵字:implements

語法如下:

class A implements B{......}

我們也可以把實現(xiàn)看成一種特殊的繼承(接口和類之間的關(guān)系),但是要注意關(guān)鍵字的不同。

注意點:

一:實現(xiàn)的關(guān)鍵字與繼承不同,是implements。

二:當非抽象類實現(xiàn)接口時,一定要將接口中的抽象方法重寫。

三:在類中實現(xiàn)接口中抽象方法時,修飾符列表不能省略。

四:一個類可以實現(xiàn)多個接口,這樣彌補了類和類之間只存在單繼承的缺陷。

接口和多態(tài)聯(lián)合使用

接口是完全抽象的,無法實例化,但是接口可以通過實現(xiàn)與多態(tài)聯(lián)合使用。

如下:

//接口
interface A{
    //抽象方法
    int add(int a , int b);
}
//一個類實現(xiàn)了接口B
class B implements A{
    //重寫了接口中的抽象方法
    public int add(int a , int b){
        return a+b;
    }
    public static void main(String[] args) {
        //A接口的引用指向了B類的對象
        //面向接口編程
        A a = new B();
    }
}

繼承和實現(xiàn)同時出現(xiàn)

extends 和 implements可以同時出現(xiàn),同時出現(xiàn)時,要將extends寫在前面,inplements寫在后面。

class Animal{
}
interface  Flyable{
     void fly();
}
//當繼承和實現(xiàn)同時出現(xiàn)時,繼承寫前面,實現(xiàn)寫后面
class Bird extends Animal implements Flyable{
    public void fly(){
        System.out.println("Bird學會了飛翔!");
    }
    public static void main(String[] args) {
        Flyable b = new Bird();
        b.fly();
    }
}

接口在開發(fā)中的作用

面向接口編程,可以降低程序耦合度,提高程序擴展力,符合ocp開發(fā)原則。

任何一個接口都有調(diào)用者和實現(xiàn)者,調(diào)用者面向接口調(diào)用,實現(xiàn)者面向接口編寫實現(xiàn),接口和多態(tài)一起使用可以將調(diào)用者和實現(xiàn)者解耦合(切斷二者的關(guān)系)。

類型和類型之間的關(guān)系

is a

Cat is a Animal

凡是能滿足 is a 的表示繼承關(guān)系,可以讓Cat類繼承Animal類。

has a

Bird has a Wing

凡是能滿足 has a 的表示關(guān)聯(lián)關(guān)系。

管理關(guān)系通常以屬性的修飾存在,可以將Wing定義為Bird類中的一個實例變量。

like a

Cook like a Menu(比較抽象)

凡是能滿足 like a 的表示實現(xiàn)關(guān)系,可以用Cook這個類來實現(xiàn)Menu這個接口。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!  

相關(guān)文章

  • Java中的非對稱加密算法原理與實現(xiàn)方式

    Java中的非對稱加密算法原理與實現(xiàn)方式

    在當今的信息時代,數(shù)據(jù)安全已經(jīng)成為了一個至關(guān)重要的問題,加密技術(shù)作為保障信息安全的重要手段,受到了廣泛的應(yīng)用和關(guān)注,本篇文章將詳細介紹Java中的非對稱加密算法原理及其實現(xiàn)方式,需要的朋友可以參考下
    2023-12-12
  • Java 中 Map 集合的三種遍歷方式小結(jié)

    Java 中 Map 集合的三種遍歷方式小結(jié)

    這篇文章主要介紹了Java 中 Map 集合的三種遍歷方式,每種遍歷方式結(jié)合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • Java判斷字符串為空、字符串是否為數(shù)字

    Java判斷字符串為空、字符串是否為數(shù)字

    這篇文章主要介紹了Java判斷字符串為空、字符串是否為數(shù)字,其中數(shù)字的判斷介紹了3種方法,需要的朋友可以參考下
    2014-06-06
  • Springboot集成RabbitMQ死信隊列的實現(xiàn)

    Springboot集成RabbitMQ死信隊列的實現(xiàn)

    在大多數(shù)的MQ中間件中,都有死信隊列的概念。本文主要介紹了Springboot集成RabbitMQ死信隊列的實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • java控制臺實現(xiàn)拼圖游戲

    java控制臺實現(xiàn)拼圖游戲

    這篇文章主要為大家詳細介紹了java控制臺實現(xiàn)拼圖游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Mybatis中collection和association的使用區(qū)別詳解

    Mybatis中collection和association的使用區(qū)別詳解

    這篇文章主要介紹了Mybatis中collection和association的使用區(qū)別詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Java concurrency集合之 CopyOnWriteArrayList_動力節(jié)點Java學院整理

    Java concurrency集合之 CopyOnWriteArrayList_動力節(jié)點Java學院整理

    這篇文章主要介紹了Java concurrency集合之 CopyOnWriteArrayList的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • SpringBoot整合easyExcel實現(xiàn)CSV格式文件的導(dǎo)入導(dǎo)出

    SpringBoot整合easyExcel實現(xiàn)CSV格式文件的導(dǎo)入導(dǎo)出

    這篇文章主要為大家詳細介紹了SpringBoot整合easyExcel實現(xiàn)CSV格式文件的導(dǎo)入導(dǎo)出,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以參考下
    2024-02-02
  • 詳細講述Java中的對象轉(zhuǎn)型

    詳細講述Java中的對象轉(zhuǎn)型

    在本篇文章里我們給大家詳細分享了關(guān)于Java中的對象轉(zhuǎn)型的知識點內(nèi)容,有興趣的朋友們學習下。
    2018-10-10
  • SpringBoot中的多個事務(wù)管理詳解

    SpringBoot中的多個事務(wù)管理詳解

    這篇文章主要介紹了SpringBoot中的多個事務(wù)管理詳解,事務(wù)管理是一種組織和協(xié)調(diào)各種活動和資源的方法,以實現(xiàn)特定目標,它涉及規(guī)劃、執(zhí)行和監(jiān)控各種任務(wù),以確保項目或組織的順利運行,需要的朋友可以參考下
    2023-10-10

最新評論