【Medium翻譯】Java抽象類有什麼用?

今天安利一個網站,其實不少朋友應該早就知道了,我以前ARTS打卡,英文文檔的 不少出處就來自於這個網站,叫 「Medium」java

這個網站須要必定的技術去訪問,可是爲何說他好呢,由於他號稱全球最大的高質量創做型內容平臺。不少知識小編都是在這裏學習到的,也瞭解到國外程序員的一些習慣,其實和咱們國內的也差很少,可是經過英文說出來,感受還真有那麼點不同吧。程序員

小編不才,今天嘗試下翻譯這裏的好文,期待和你的交流。算法

標題:「Java Abstract Class What Is It Good For?」設計模式

文章來源:https://medium.com/swlh/java-abstract-class-what-is-it-good-for-880cf0117648數組

做者:Tome Henricksenapp

發佈時間:2019-10-15ide

Java抽象類使許多Java開發人員望而卻步。讓咱們瞭解一下它對咱們有什麼做用以及如何使用。函數

抽象主義:無原則者出售的未經懲罰的產品。Al Capp學習

我猜您據說過稱爲ADD或注意力缺陷障礙的疾病。在最近的巴黎之旅中,我兒子和我發現咱們正遭受另外一個名字類似的疾病的困擾。缺少藝術障礙。網站

咱們一塊兒看看繪畫和雕塑,發現它們毫無生氣。我女兒在d'Orsay享受美食的地方,咱們在尋找美食廣場。在這裏,咱們享用了濃縮咖啡和鮮榨橙汁。

Java抽象類

Java具備不完整的抽象類。它們不能像常規類那樣實現,必須對抽象類進行子類化才能使用。在這些類中,咱們能夠聲明抽象方法。抽象類相似於Java中的接口。讓咱們更深刻地進行比較。

比較

像接口同樣,抽象類沒法實例化。若是接口僅包含方法簽名,則抽象類能夠包含方法主體。抽象類能夠聲明非靜態和final字段。

Java教程在使用抽象類時提供了一些很好的指導。原文以下(這裏不進行翻譯)When we 「want to share code among several closely related classes」 or 「expect that classes that extend your abstract class have many common methods or fields」. Interfaces should be used when 「expect that unrelated classes would implement your interface」 or 「want to specify the behavior of a particular data type」.

Java抽象類示例

像全部優秀的編碼員同樣,讓咱們着手編寫一些代碼。首先,咱們能夠看一個示例抽象類來入門。

package com.myitcareercoach;

public abstract class Battery {
    int volt;
    int amps;
    void charge(int chargingTime) {
        // shared code
    }
    
    abstract boolean fullyCharged();
    
    abstract boolean isTooHot();
    
}

這個Battery 抽象類有一個實現的方法和兩個抽象方法。而且還定義了兩個字段。

package com.myitcareercoach;

public class ComputerBattery extends Battery {

    @Override
    boolean fullyCharged() {
        // TODO Add some code here!
        return false;
    }

    @Override
    boolean isTooHot() {
        // TODO Add some code here!
        return false;
    }

}

ComputerBattery是一個具體的Java類。由於它繼承了Battery類,因此它須要實現Battery定義的兩種抽象方法

抽象和接口?

抽象類甚至能夠實現接口。這彷佛是將意大利麪和土豆泥混合在一塊兒,可是,這是合法的!(老外就是幽默啊,哈哈

public interface Student {
      
       public void setSchedule();
      
       public void registerForClass(String className);

}

讓咱們採用Student 接口並將其混合在抽象類中

public abstract class ProbationaryStudent implements Student {

    @Override
    public void setSchedule() {
        // implemented method
    }

    // not going to override registerForClass() method

}

在咱們的ProbationaryStudent中,咱們不須要實現Student接口中的全部方法。由於該類被標記爲抽象,因此這種狀況是可能的。

Main?

您是否定爲抽象方法中的main方法能夠運行?

public abstract class DoesItRun {

    public static void main(String[] args) {
        System.out.println("Does it run?");
    }

}

起先我也不認爲會,可是實際上,它確實能夠運行。我建議您本身嘗試一下。如您所見,抽象類在Java中佔有一席之地。與interface(接口)類似,但使用方式不一樣。

您在哪裏使用過Java接口?

結尾

在這裏,這篇翻譯就結束了。這是篇Java的基礎入門級文章,可是也體現出了Java abstract(抽象類)的重要性,以及簡單的入門。

好比abstract(抽象類)是須要用繼承的方式來的,而且定義的每一個抽象方法在子類中都須要實現;interface(接口)是用來實現的,子類中並不須要實現所有的方法。

還有一個小彩蛋,在抽象類中,也是能執行main函數的哦。

此次,小編小試牛刀,後續會翻譯一些我認爲更好的文章出來,和你們一塊兒進步,一塊兒加油。喜歡的話,給點鼓勵噢~

推薦閱讀:

Leetcode算法【34在排序數組中查找元素】

寫了好久,這是一份適合普通大衆/科班/非科班的『學習路線』

長久養成的打卡習慣可千萬不能丟呀

Java 中的 final、finally、finalize 有什麼不一樣?

求求你別再「從入門到放棄了」,貴在堅持

「奔跑吧攻城獅」感謝你們的關注,如今後臺回覆「設計模式」贈你小編精心挑選設計模式書籍。小編想打造一個高質量交流羣,回覆「加羣」或右下角點擊「撩我 -> 一塊兒學」解鎖。

本文由博客一文多發平臺 OpenWrite 發佈!

相關文章
相關標籤/搜索