亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java面向?qū)ο蠡A(chǔ)知識之封裝,繼承,多態(tài)和抽象

 更新時間:2021年11月08日 15:03:56   作者:一指流砂~  
這篇文章主要介紹了Java面向?qū)ο蟮姆庋b,繼承,多態(tài)和抽象,文中有非常詳細的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很好的幫助,需要的朋友可以參考下

一、封裝

封裝:是面向?qū)ο蠓椒ǖ闹匾瓌t,就是把對象的屬性和行為(數(shù)據(jù))結(jié)合為一個獨立的整體,并盡可能隱藏對象的內(nèi)部實現(xiàn)細節(jié),就是把不想告訴或者不該告訴別人的東西隱藏起來,把可以告訴別人的公開,別人只能用我提供的功能實現(xiàn)需求,而不知道是如何實現(xiàn)的。增加安全性

public class Person {
    private String name;
    private int gender;
    private int age;
    public String getName() {
        return name;
    }
    public String getGender() {
        return gender == 0 ? "man" : "woman";
    }
    public void work() {
        if (18 <= age && age <= 50) {
            System.out.println(name + " is working very hard!");
        } else {
            System.out.println(name + " can't work any more!");
        }
    }
}

以上 Person 類封裝 name、gender、age 等屬性,外界只能通過 get() 方法獲取一個 Person 對象的 name 屬性和 gender 屬性,而無法獲取 age 屬性,但是 age 屬性可以供 work() 方法使用。

注意到 gender 屬性使用 int 數(shù)據(jù)類型進行存儲,封裝使得用戶注意不到這種實現(xiàn)細節(jié)。并且在需要修改 gender 屬性使用的數(shù)據(jù)類型時,也可以在不影響客戶端代碼的情況下進行。

二、繼承

繼承:是面向?qū)ο笞铒@著的一個特性,繼承是從已有的類中派生出新的類稱為子類,子類繼承父類的數(shù)據(jù)屬性和行為,并能根據(jù)自己的需求擴展出新的行為,提高了代碼的復(fù)用性。

Animal animal = new Cat();

繼承應(yīng)該遵循里氏替換原則,子類對象必須能夠替換掉所有父類對象。

三、多態(tài)

多態(tài):指允許不同的對象對同一消息做出相應(yīng)。即同一消息可以根據(jù)發(fā)送對象的不同而采用多種不同的行為方式(發(fā)送消息就是函數(shù)調(diào)用)。封裝和繼承幾乎都是為多態(tài)而準(zhǔn)備的,在執(zhí)行期間判斷引用對象的實際類型,根據(jù)其實際的類型調(diào)用其相應(yīng)的方法。

多態(tài)分為編譯時多態(tài)和運行時多態(tài)。編譯時多態(tài)主要指方法的重載,運行時多態(tài)指程序中定義的對象引用所指向的具體類型在運行期間才確定。

//父類
public class Base {
    protected void show() {}
}
//子類
class Kid: Base {
     public  void show() {
        System.out.println(" i am  kid");
    }
}
public static void main( String[] args )
    {
        Base base =  new Kid();
        base.show();
    }

四、抽象

抽象是從眾多的事物中抽取出共同的、本質(zhì)性的特征,而舍棄其非本質(zhì)的特征。

例如蘋果、香蕉、生梨、葡萄、桃子等,它們共同的特性就是水果。得出水果概念的過程,就是一個抽象的過程。

要抽象,就必須進行比較,沒有比較就無法找到共同的部分。

共同特征是指那些能把一類事物與他類事物區(qū)分開來的特征,這些具有區(qū)分作用的特征又稱本質(zhì)特征。

因此抽取事物的共同特征就是抽取事物的本質(zhì)特征,舍棄不同特征。

所以抽象的過程也是一個裁剪的過程,不同的、非本質(zhì)性的特征全部裁剪掉了。

所謂的共同特征,是相對的,是指從某一個刻面看是共同的。

比如,對于汽車和大米,從買賣的角度看都是商品,都有價格,這是他們的共同的特征,而從其他方面來比較是,他們則是不同的。

所以在抽象時,同與不同,決定于從什么角度上來抽象。抽象的角度取決于分析問題的目的。

在軟件開發(fā)過程中,識別穩(wěn)定的需求、識別核心的需求、識別概念性的需求、設(shè)計系統(tǒng)的架構(gòu)、定義系統(tǒng)中構(gòu)件之間的接口關(guān)系等等都是抽象的過程,都是反應(yīng)系統(tǒng)的本質(zhì)特征的過程。

抽象的,才是穩(wěn)定的,才是永恒的。 抽象的反義詞是具體。人員往往會說:“你講的太抽象了,能不能講的具體一點?”

在開發(fā)語言中,有抽象類,有具體類,具體類可以繼承自抽象類,可以實例化。抽象類可以派生出眾多的不同的具體類。

所謂:“一生二,二生三,三生萬物”。系統(tǒng)的穩(wěn)定體現(xiàn)在抽象類,系統(tǒng)的變化體現(xiàn)在具體類。抽象類的層次要高于具體類。

系統(tǒng)因抽象而穩(wěn)定,因抽象而生動。

抽象用 abstract 關(guān)鍵字來修飾,用 abstract 修飾類時,此類就不能被實例化,從這里可以看出,抽象類就是為了繼承而存在的,

如果定義了一個抽象類而不去繼承它,那么等于白白創(chuàng)建了這個抽象類,因為你不能用它來做任何事情,用 abstract 修飾方法時,此方法就是抽象方法,抽象方法必須存在于抽象類中,抽象方法沒有方法體,

對于一個父類來說,如果它的某個方法在父類中實現(xiàn)出來沒有任何意義,必須根據(jù)子類的實際需求來進行不同的實現(xiàn),那么就可以將這個方法聲明為抽象方法,抽象方法的修飾符必須為 public 或者 protected ,因為用 private,則不能被子類繼承,子類便無法實現(xiàn)該方法,缺省情況下默認為 public 。

總結(jié)

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

相關(guān)文章

  • Java函數(shù)式編程(十):收集器

    Java函數(shù)式編程(十):收集器

    這篇文章主要介紹了Java函數(shù)式編程(十):收集器,本文是系列文章的第10篇,其它文章請參閱本文底部的相關(guān)文章,需要的朋友可以參考下
    2014-09-09
  • 深入剖析ArrayList的remove方法

    深入剖析ArrayList的remove方法

    這篇文章主要介紹了ArrayList的remove方法使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。</p>
    2021-09-09
  • java讀取json文件的2種方式例子

    java讀取json文件的2種方式例子

    這篇文章主要給大家介紹了關(guān)于java讀取json文件的2種方式,在開發(fā)過程中有時會遇到需要讀取.json文件的需求,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • 詳解Java中方法重寫和方法重載的6個區(qū)別

    詳解Java中方法重寫和方法重載的6個區(qū)別

    方法重寫和方法重載都是面向?qū)ο缶幊讨?,那么方法重寫和方法重載有哪些區(qū)別,本文就詳細的來介紹一下,感興趣的可以了解一下
    2022-01-01
  • Java程序員面試中的多線程問題總結(jié)

    Java程序員面試中的多線程問題總結(jié)

    這篇文章收集了 Java 線程方面一些典型的問題,這些問題經(jīng)常被高級工程師所問到。這篇文章收集了 Java 線程方面一些典型的問題,這些問題經(jīng)常被高級工程師所問到。
    2016-11-11
  • 詳解如何實現(xiàn)SpringBoot的底層注解

    詳解如何實現(xiàn)SpringBoot的底層注解

    今天給大家?guī)淼奈恼率侨绾螌崿F(xiàn)SpringBoot的底層注解,文中有非常詳細的介紹及代碼示例,對正在學(xué)習(xí)java的小伙伴很有幫助,需要的朋友可以參考下
    2021-06-06
  • Java字符串相關(guān)類StringBuffer的用法詳解

    Java字符串相關(guān)類StringBuffer的用法詳解

    java.lang包下的StringBuffer類,代表著可變的字符序列,可以用來對字符串內(nèi)容進行增刪改操作。本文將通過示例詳細說說它的用法,感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2022-10-10
  • java中的取整與四舍五入方法實例

    java中的取整與四舍五入方法實例

    這篇文章主要給大家介紹了關(guān)于java中取整與四舍五入的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • springboot-rabbitmq-reply?消息直接回復(fù)模式詳情

    springboot-rabbitmq-reply?消息直接回復(fù)模式詳情

    這篇文章主要介紹了springboot-rabbitmq-reply消息直接回復(fù)模式詳情,文章通過圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-09-09
  • 分享15款Java程序員必備的開發(fā)工具

    分享15款Java程序員必備的開發(fā)工具

    這篇文章主要介紹了分享15款Java程序員必備的開發(fā)工具,需要的朋友可以參考下
    2015-02-02

最新評論