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

Java?深入淺出解析面向?qū)ο笾橄箢惡徒涌?/h1>
 更新時(shí)間:2022年03月23日 14:59:35   作者:桃花鍵神  
本章具體介紹了抽象類和接口,整篇文章用目前流行的手機(jī)來(lái)舉例,圖解穿插代碼案例。?JAVA成仙路從基礎(chǔ)開始講,后續(xù)會(huì)講到JAVA高級(jí),中間會(huì)穿插面試題和項(xiàng)目實(shí)戰(zhàn),希望能給大家?guī)?lái)幫助

抽象類

java語(yǔ)言,聲明類時(shí) abstract class Db{} 說(shuō)明Db類為抽象類。 java語(yǔ)言中,抽象方法是說(shuō)沒有方法的實(shí)現(xiàn)(方法體)此方法為抽象方法,只有抽象類和接口中才可以有抽象方法。

聲明抽象類

聲明抽象類很簡(jiǎn)單,加個(gè)abstract關(guān)節(jié)字就行。

public abstract class AA {
}

聲明抽象方法

在抽象類中聲明一個(gè)抽象方法,抽象方法沒有方法體,就是說(shuō)現(xiàn)在這個(gè)方法就是個(gè)空架子。

public abstract class AA {
    public abstract int a(int i);
}

案例

描述:

  • 小米手機(jī)生產(chǎn)廠生產(chǎn)手機(jī),小米手機(jī)廠內(nèi)部分為兩個(gè)分廠,一個(gè)是紅米手機(jī)廠,一個(gè)是黑米手機(jī)廠。
  • 紅米手機(jī)特點(diǎn)是屏幕大,充電快。
  • 黑米手機(jī)特點(diǎn)是發(fā)熱,音質(zhì)好。

實(shí)現(xiàn):

  • 先聲明一個(gè)抽象類 小米手機(jī)廠類,小米手機(jī)廠類里有兩個(gè)抽象方法分別為a和b,還有一個(gè)定義過(guò)的方法c
  • 再聲明一個(gè)紅米手機(jī)廠類繼承小米手機(jī)廠,并且實(shí)現(xiàn)方法a和方法b
  • 再聲明一個(gè)黑米手機(jī)廠類繼承小米手機(jī)廠,并且實(shí)現(xiàn)方法a和方法b

代碼:

Mi.java

public abstract class Mi {
    public abstract void a();
    public abstract void b();
    public void c(){
        System.out.println("小米手機(jī)好");
    }
}

Hong.java

public class Hong extends Mi {

    @Override
    public void a() {
        System.out.println("紅米手機(jī)屏幕大");
    }

    @Override
    public void b() {
        System.out.println("紅米手機(jī)充電快");
    }
}

Hei.java

public class Hei extends Mi {

    @Override
    public void a() {
        System.out.println("黑米手機(jī)發(fā)熱");
    }

    @Override
    public void b() {
        System.out.println("黑米手機(jī)音質(zhì)好");
    }
}

測(cè)試:

public class Test {
    public static void main(String[] args) {
        Hong hong = new Hong();
        Hei hei = new Hei();
        hong.a();
        hong.b();
        hong.c();
        hei.a();
        hei.b();
        hei.c();
    }
}

這個(gè)案例的主要描述了抽象方法的一個(gè)應(yīng)用場(chǎng)景,紅米和黑米是小米的一個(gè)分支,他們有小米的部分功能,但是他們還想有自己的特色。那么就可以通過(guò)實(shí)現(xiàn)小米的兩個(gè)抽象方法來(lái)實(shí)現(xiàn)自己的特色。并且小米只聲明了兩個(gè)抽象方法,限制了兩個(gè)子廠的特色,讓他們只能增加兩個(gè)特色,不能無(wú)限制的隨意增加多個(gè)特色。

使用規(guī)則

使用規(guī)則

抽象類必須被繼承,抽象方法必須被重寫。

抽象類中的抽象方法只需聲明,無(wú)需實(shí)現(xiàn),沒有方法體

抽象類不能被實(shí)例化,抽象類不一定要包含抽象方法,而定義抽象方法的類必須是抽象類。

抽象類包含的抽象方法必須在其子類中被實(shí)現(xiàn),否則該子類也必須是抽象類。

抽象類可以有構(gòu)造方法供子類實(shí)例化對(duì)象

抽象類不能直接實(shí)例化使用,一般用的是抽象類的子類,

A a = new B();

A和B之間的關(guān)系,繼承關(guān)系,接口實(shí)例關(guān)系。

類:方法+屬性+靜態(tài)程序段+初始化程序段

抽象類:方法+抽象方法+屬性+靜態(tài)程序段+初始化程序段

抽象類本質(zhì)

1.從類的組成上看其是抽象方法和非抽象方法的集合,還有屬性(常量)。

2.從設(shè)計(jì)的角度來(lái)看,實(shí)際上抽象類定義了一套規(guī)范(抽象方法)。(規(guī)范)

接口

接口(英文:Interface),在JAVA編程語(yǔ)言中是一個(gè)抽象類型,是抽象方法的集合,接口通常以interface來(lái)聲明。一個(gè)類通過(guò)繼承接口的方式,從而來(lái)繼承接口的抽象方法。 接口并不是類,編寫接口的方式和類很相似,但是它們屬于不同的概念。類描述對(duì)象的屬性和方法。接口則包含類要實(shí)現(xiàn)的方法。 除非實(shí)現(xiàn)接口的類是抽象類,否則該類要定義接口中的所有方法。 接口無(wú)法被實(shí)例化,但是可以被實(shí)現(xiàn)。一個(gè)實(shí)現(xiàn)接口的類,必須實(shí)現(xiàn)接口內(nèi)所描述的所有方法,否則就必須聲明為抽象類。另外,在 Java 中,接口類型可用來(lái)聲明一個(gè)變量,他們可以成為一個(gè)空指針,或是被綁定在一個(gè)以此接口實(shí)現(xiàn)的對(duì)象。

聲明接口

interface關(guān)鍵字聲明接口AA

public interface AA {
}

案例

描述:

富士康加工廠里有兩個(gè)分廠,分別是加工華為手機(jī)和蘋果手機(jī)。每個(gè)手機(jī)是由電池、芯片、屏幕這三個(gè)硬件組成。兩個(gè)品牌的手機(jī)都是由這三個(gè)硬件組成但是硬件的型號(hào)不同。

但是這兩個(gè)廠都有一個(gè)統(tǒng)一的加工程序把手機(jī)組裝

實(shí)現(xiàn):

聲明富士康接口,接口內(nèi)聲明一個(gè)抽象方法用來(lái)組裝手機(jī)。

華為和蘋果兩個(gè)類分別實(shí)現(xiàn)富士康接口,并且實(shí)現(xiàn)里面的方法。

富士康接口

public interface Fu {
    void zhuang();
}

華為加工廠

public class HuaWei implements Fu {
    private final String xin = "麒麟芯片";
    private final String dian = "6000am電池";
    private final String ping = "大猩猩屏幕";

    @Override
    public void zhuang() {
        System.out.printf("華為手機(jī):%s,%s,%s %n", xin, dian, ping);
    }
}

蘋果加工廠

public class Iphoe implements Fu {
    private final String xin = "A15芯片";
    private final String dian = "3000am電池";
    private final String ping = "小猩猩屏幕";

    @Override
    public void zhuang() {
        System.out.printf("蘋果手機(jī):%s,%s,%s %n", xin, dian, ping);
    }
}

測(cè)試

public class Test {
    public static void main(String[] args) {
        HuaWei huaWei = new HuaWei();
        Iphoe iphoe = new Iphoe();
        huaWei.zhuang();
        iphoe.zhuang();
    }
}

接口特性

接口中每一個(gè)方法也是隱式抽象的,接口中的方法會(huì)被隱式的指定為 public abstract(只能是 public abstract,其他修飾符都會(huì)報(bào)錯(cuò))。

接口中可以含有變量,但是接口中的變量會(huì)被隱式的指定為 public static final 變量(并且只能是 public,用 private 修飾會(huì)報(bào)編譯錯(cuò)誤)。

接口中的方法是不能在接口中實(shí)現(xiàn)的,只能由實(shí)現(xiàn)接口的類來(lái)實(shí)現(xiàn)接口中的方法。

抽象類和接口的區(qū)別

  • 抽象類中的方法可以有方法體,就是能實(shí)現(xiàn)方法的具體功能,但是接口中的方法不行。
  • 抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是 public static final 類型的。
  • 接口中不能含有靜態(tài)代碼塊以及靜態(tài)方法(用 static 修飾的方法),而抽象類是可以有靜態(tài)代碼塊和靜態(tài)方法。
  • 一個(gè)類只能繼承一個(gè)抽象類,而一個(gè)類卻可以實(shí)現(xiàn)多個(gè)接口。

到此這篇關(guān)于Java 深入淺出解析面向?qū)ο笾橄箢惡徒涌诘奈恼戮徒榻B到這了,更多相關(guān)Java 抽象類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java程序結(jié)構(gòu)與常量變量難點(diǎn)解析

    Java程序結(jié)構(gòu)與常量變量難點(diǎn)解析

    JAVA的基本結(jié)構(gòu)就是順序結(jié)構(gòu),除非特別指明,否則就按照順序一句一句執(zhí)行順序結(jié)構(gòu)是最簡(jiǎn)單的算法結(jié)構(gòu),語(yǔ)句與語(yǔ)句之間,框與框之間是按從上到下的順序進(jìn)行的,它是由若干個(gè)依次執(zhí)行的處理步驟組成的,它是任何一個(gè)算法都離不開的一種基本算法結(jié)構(gòu)
    2021-10-10
  • Java 內(nèi)置Http Server構(gòu)建web應(yīng)用案例詳解

    Java 內(nèi)置Http Server構(gòu)建web應(yīng)用案例詳解

    這篇文章主要介紹了Java 內(nèi)置Http Server構(gòu)建web應(yīng)用案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • java并發(fā)編程專題(一)----線程基礎(chǔ)知識(shí)

    java并發(fā)編程專題(一)----線程基礎(chǔ)知識(shí)

    這篇文章主要介紹了java并發(fā)編程線程的基礎(chǔ)知識(shí),文中講解非常詳細(xì),幫助大家更好的學(xué)習(xí)JAVA并發(fā)編程,感興趣想學(xué)習(xí)JAVA的可以了解下
    2020-06-06
  • LeetCode程序員面試題之遞歸乘法

    LeetCode程序員面試題之遞歸乘法

    在Java中,遞歸乘法是一種簡(jiǎn)單而有效的方法,可以用來(lái)計(jì)算兩個(gè)數(shù)字的乘積。它的基本思想是:如果第一個(gè)數(shù)字是0,則乘積為0;如果第一個(gè)數(shù)字是1,則乘積為第二個(gè)數(shù)字;其他情況,則通過(guò)將第一個(gè)數(shù)字減1,并將第二個(gè)數(shù)字與自身相乘,來(lái)實(shí)現(xiàn)遞歸乘法。
    2023-02-02
  • springboot使用war包部署到外部tomcat過(guò)程解析

    springboot使用war包部署到外部tomcat過(guò)程解析

    這篇文章主要介紹了springboot使用war包部署到外部tomcat過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • JAVA中通過(guò)Hibernate-Validation進(jìn)行參數(shù)驗(yàn)證

    JAVA中通過(guò)Hibernate-Validation進(jìn)行參數(shù)驗(yàn)證

    這篇文章主要介紹了JAVA中通過(guò)Hibernate-Validation進(jìn)行參數(shù)驗(yàn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • java基礎(chǔ)之方法詳解

    java基礎(chǔ)之方法詳解

    這篇文章主要介紹了java基礎(chǔ)之方法詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Java與SpringBoot對(duì)redis的使用方式

    Java與SpringBoot對(duì)redis的使用方式

    這篇文章主要介紹了Java與SpringBoot對(duì)redis的使用方式,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • Java 程序員掌握 Spring Boot非常有必要

    Java 程序員掌握 Spring Boot非常有必要

    本文帶領(lǐng)大家一起來(lái)了解下 Spring Boot 到底是什么?包括springboot的誕生,springboot特征具有哪些優(yōu)勢(shì),如何讓開發(fā)變得更簡(jiǎn)單,帶著這些問(wèn)題一起通過(guò)本文學(xué)習(xí)下吧
    2021-06-06
  • 在springboot中使用p6spy方式

    在springboot中使用p6spy方式

    這篇文章主要介紹了在springboot中使用p6spy方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評(píng)論