1. 程式人生 > 程式設計 >【Medium翻譯】Java抽象類有什麼用?

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

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

這個網站需要一定的技術去訪問,但是為什麼說他好呢,因為他號稱全球最大的高質量創作型內容平臺。很多知識小編都是在這裡學習到的,也瞭解到國外程式設計師的一些習慣,其實和我們國內的也差不多,但是通過英文說出來,感覺還真有那麼點不一樣吧。

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

標題:「Java Abstract Class What Is It Good For?」

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

作者:Tome Henricksen

釋出時間:2019-10-15

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 釋出!