最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一篇文章帶你了解Java基礎(chǔ)-抽象

 更新時間:2021年08月05日 11:01:23   作者:太子爺哪吒  
這篇文章主要給大家介紹了關(guān)于Java抽象定義以及舉例的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Java基礎(chǔ)知識(抽象)

抽象

抽象是從眾多的事物中抽取出共同的、本質(zhì)性的特征,而舍棄其非本質(zhì)的特征的過程。具體地說,抽象就是人們在實(shí)踐的基礎(chǔ)上,對于豐富的感性材料通過去粗取精、去偽存真、由此及彼、由表及里的加工制作,形成概念、判斷、推理等思維形式,以反映事物的本質(zhì)和規(guī)律的方法。

抽象定義

在繼承過程中,我們知道父類的方法可以子類進(jìn)行重寫,而每個子類各自的實(shí)現(xiàn)都不盡相同。就好比動物都有吃的方法行為吧,而每個動物的子類對于吃的東西都可能不是相同滴,可是這導(dǎo)致了什么呢?

我們定義父類的方法主體是不是就沒有任何意義了,因?yàn)樵谧宇愓{(diào)用方法過程中,是調(diào)用了自己重寫的方法,而不是父類的方法。

也就是說,父類聲明了方法,子類去各自實(shí)現(xiàn)該方法即可。代表著父類可以不知道具體實(shí)現(xiàn)是什么,但是清楚的有什么方法是需要的。所以方法父類完全只需要提供一個沒有方法體的方法簽名即可,具體實(shí)現(xiàn)交給子類自己去實(shí)現(xiàn)。

而我們對于這種沒有方法體的方法稱為抽象方法。在Java語法規(guī)定,包含抽象方法的類就是抽象類。

  • 抽象方法 : 沒有方法體的方法。
  • 抽象類:包含抽象方法的類。

定義抽象的關(guān)鍵字:abstract,接下來看看如何使用吧!

abstract的使用

abstract是抽象的意思,用于修飾方法方法和類,修飾的方法是抽象方法,修飾的類是抽象類。

抽象方法:

使用abstract 關(guān)鍵字修飾方法,該方法就成了抽象方法,抽象方法只包含一個方法名,而沒有方法體。

定義格式:

權(quán)限修飾符 abstract 返回值類型 方法名 (參數(shù)列表);

代碼如下:

public abstract void eat();

抽象類:

如果一個類包含抽象方法,那么該類必須是抽象類。

注意:抽象類不一定有抽象方法,但是有抽象方法的類必須定義成抽象類。

定義格式:

abstract class 類名字 { 
}

代碼如下:

public abstract class Animal {
    public abstract void eat();
}

定義抽象類

我們將之前的動物類改造成抽象類,然后吃的方法也改造成抽象方法。

注意:一旦定義為抽象類后,子類繼承父類時,是必須重寫里面的抽象方法。

定義抽象父類:

package com.na.pojo;
/**
 * 先定義一個抽象父類 --> 動物類
 * 動物都有一個吃的抽象方法
 */
public abstract class Animal {
    // 定義為抽象方法后,無需去做方法實(shí)體的實(shí)現(xiàn)!
    public abstract void eat();
}

定義子類:

貓咪:

package com.na.pojo;
/**
 * 定義貓類繼承抽象動物類,
 * 隨之重寫里面的吃行為,因?yàn)樨堃灿谐缘男袨椋秦埾矚g吃罐頭
 */
public class Cat extends Animal{
    // 抽象類的方法必須重寫,不然編譯會不通過。
    public void eat() {
        System.out.println("小喵咪都喜歡吃魚罐頭!");
    }
    /**
     * 增加一哥貓咪特有的玩球方法()
     */
    public void playBall() {
        System.out.println("小喵咪都喜歡小球!");
    }
}

小狗:

package com.na.pojo;
/**
 * 定義狗類繼承抽象動物類,
 * 隨之重寫里面的吃行為,因?yàn)楣芬灿谐缘男袨?,但是狗喜歡啃骨頭
 */
public class Dog extends Animal{
    // 抽象類的方法必須重寫,不然編譯會不通過。
    public void eat() {
        System.out.println("小狗狗都愛啃骨頭!");
    }
    public void walk() {
        System.out.println("小狗在被我溜著!");
    }
}

定義測試類:

package com.na;
import com.na.pojo.Animal;
import com.na.pojo.Cat;
import com.na.pojo.Dog;
public class Demo {
    public static void main(String[] args) {
        // 創(chuàng)建抽象類,抽象類不能創(chuàng)建對象
//		Animal animal = new Animal();
//        animal.eat();
        // 創(chuàng)建小貓咪
        Cat cat = new Cat();
        cat.eat();
        cat.playBall();
        Dog dog = new Dog();
        dog.eat();
        dog.walk();
    }
}

得到結(jié)果:

小喵咪都喜歡吃魚罐頭!
小喵咪都喜歡小球!
小狗狗都愛啃骨頭!
小狗在被我溜著!

類的大致結(jié)構(gòu):

注意:假設(shè)抽象類可以創(chuàng)建對象,但是呢,里面的抽象方法是沒有方法體給我們?nèi)?shí)現(xiàn),從而程序也是無法執(zhí)行,所以不讓我們創(chuàng)建對象。

抽象類的一些注意點(diǎn)

對于抽象類的使用,以下為抽象類的使用上要注意的細(xì)節(jié):

1.抽象類不能創(chuàng)建對象,如果創(chuàng)建,編譯無法通過而報(bào)錯。只能創(chuàng)建其非抽象子類的對象。

假設(shè)創(chuàng)建了抽象類的對象,調(diào)用抽象的方法,而抽象方法沒有具體的方法體,沒有意義。

2.抽象類中,可以有構(gòu)造器,是供子類創(chuàng)建對象時,初始化父類成員使用的。

子類的構(gòu)造方法中,有默認(rèn)的super(),需要訪問父類構(gòu)造方法。

package com.na.pojo;
/**
 * 先定義一個抽象父類 --> 動物類
 * 動物都有一個吃的抽象方法
 */
public abstract class Animal {
    private String name;
    private int age;
    // 可以有構(gòu)造器
    public Animal(){
    }
    // 甚至可以有參構(gòu)造器
    public Animal(String name, int age){
        this.name = name;
        this.age = age;
    }
    // 定義為抽象方法后,無需去做方法實(shí)體的實(shí)現(xiàn)!
    public abstract void eat();
}

3.抽象類中,不一定包含抽象方法,但是有抽象方法的類必定是抽象類。

未包含抽象方法的抽象類,目的就是不想讓調(diào)用者創(chuàng)建該類對象,通常用于某些特殊的類結(jié)構(gòu)設(shè)計(jì)。

4.抽象類的子類,必須重寫抽象父類中所有的抽象方法,否則子類也必須定義成抽象類,編譯無法通過而報(bào)錯。

如果子類不重寫所有抽象方法,則類中可能會包含抽象方法。那么在創(chuàng)建對象后,調(diào)用抽象的方法,沒有意義。

5.抽象類存在的意義是為了被子類繼承,抽象類體現(xiàn)的是模板思想。

抽象類中已經(jīng)實(shí)現(xiàn)的是模板中確定的成員,抽象類不確定如何實(shí)現(xiàn)的定義成抽象方法,交給具體的子類去實(shí)現(xiàn)。

總結(jié)

相信各位看官都對Java基礎(chǔ)中的抽象的知識和使用有了一定了解,等待下一次更多Java基礎(chǔ)的學(xué)習(xí)吧!

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

相關(guān)文章

  • SpringBoot項(xiàng)目啟動時提示程序包不存在和找不到符號的處理方法

    SpringBoot項(xiàng)目啟動時提示程序包不存在和找不到符號的處理方法

    最近接手同事開發(fā)的一個Springboot工作項(xiàng)目,從svn上整體拉取下來后,構(gòu)建完成后,啟動的時候遇到了程序包找不到的情況,所以本文記錄了SpringBoot項(xiàng)目啟動時提示程序包不存在和找不到符號的處理方法,需要的朋友可以參考下
    2024-05-05
  • java?mybatis如何操作postgresql?array數(shù)組類型

    java?mybatis如何操作postgresql?array數(shù)組類型

    這篇文章主要介紹了java?mybatis如何操作postgresql?array數(shù)組類型,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java如何刪除以逗號隔開的字符串中某一個值

    java如何刪除以逗號隔開的字符串中某一個值

    這篇文章主要介紹了java如何刪除以逗號隔開的字符串中某一個值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • java中的4種循環(huán)方法示例詳情

    java中的4種循環(huán)方法示例詳情

    大家好,本篇文章主要講的是java中的4種循環(huán)方法示例詳情,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • springboot使用logback文件查看錯誤日志過程詳解

    springboot使用logback文件查看錯誤日志過程詳解

    這篇文章主要介紹了springboot使用logback文件查看錯誤日志過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 如何用120行Java代碼寫一個自己的區(qū)塊鏈

    如何用120行Java代碼寫一個自己的區(qū)塊鏈

    這篇文章就是幫助你使用 Java 語言來實(shí)現(xiàn)一個簡單的區(qū)塊鏈,用不到 120 行代碼來揭示區(qū)塊鏈的原理,感興趣的就一起來了解一下
    2019-06-06
  • 手把手寫Spring框架

    手把手寫Spring框架

    Spring是于2003 年興起的一個輕量級的Java 開發(fā)框架,由Rod Johnson創(chuàng)建。簡單來說,Spring是一個分層的JavaSE/EE full-stack(一站式) 輕量級開源框架
    2021-08-08
  • IDEA 中 30 秒創(chuàng)建一個 Spring Cloud Alibaba 工程

    IDEA 中 30 秒創(chuàng)建一個 Spring Cloud Alibaba 工程

    這篇文章主要介紹了IDEA 中 30 秒生成 Spring Cloud Alibaba 工程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì)對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • SpringBoot中的Actuator詳解

    SpringBoot中的Actuator詳解

    這篇文章主要介紹了SpringBoot中的Actuator詳解,Spring Boot Actuator 在Spring Boot第一個版本發(fā)布的時候就有了,它為Spring Boot提供了一系列產(chǎn)品級的特性,監(jiān)控應(yīng)用程序,收集元數(shù)據(jù),運(yùn)行情況或者數(shù)據(jù)庫狀態(tài)等,需要的朋友可以參考下
    2023-09-09
  • MyBatis-Plus中提供的各種注解詳細(xì)說明

    MyBatis-Plus中提供的各種注解詳細(xì)說明

    這篇文章主要介紹了MyBatis-Plus中提供的各種注解詳細(xì)說明,下面對MyBatis-Plus提供的注解進(jìn)行整理,本文提供了部分示例代碼以方便理解,需要的朋友可以參考下
    2023-11-11

最新評論

察哈| 会泽县| 高州市| 宜良县| 门源| 中宁县| 砚山县| 杨浦区| 沙洋县| 饶河县| 平南县| 怀柔区| 巴塘县| 九龙城区| 台东市| 漳平市| 江川县| 吴桥县| 临泉县| 塔城市| 镇原县| 光泽县| 诏安县| 汕头市| 宿州市| 明水县| 灵寿县| 武定县| 栾城县| 元谋县| 南岸区| 蓬溪县| 金山区| 马关县| 东明县| 开远市| 万全县| 临湘市| 洱源县| 偏关县| 望奎县|