簡體   English   中英

在接口java中重寫方法

[英]overriding methods in Interface java

我用Java編寫了一個接口。 之后,我嘗試通過覆蓋來實現它,如代碼中所示。 但我得到錯誤,我必須在方法之前添加公共。

為什么我要公開? 為什么沒有公開它不起作用?

正如Net-Beans所說:“試圖分配較弱的訪問權限;是公開的”

編碼 :

    package tryinginterface;
interface Bicycle {

    //  wheel revolutions per minute
    void changeCadence(int newValue);

    void changeGear(int newValue);

    void speedUp(int increment);

    void applyBrakes(int decrement);
}


class ACMEBicycle implements Bicycle {

    int cadence = 0;
    int speed = 0;
    int gear = 1;
    @Override 
        void changeCadence(int newValue) {
         cadence = newValue;
    }
    @Override
    void changeGear(int newValue) {
         gear = newValue;
    }
    @Override
    void speedUp(int increment) {
         speed = speed + increment;   
    }
    @Override
    void applyBrakes(int decrement) {
         speed = speed - decrement;
    }
    @Override
    void printStates() {
         System.out.println("cadence:" +
             cadence + " speed:" + 
             speed + " gear:" + gear);
    }
}

接口中的所有方法都是公共的。

沒有可見性修飾符的類中的所有方法都是包私有的。

您無法將公共方法的可見性降低到package-private,因為它違反了接口。

因為在接口中,所有方法都是默認公共的 ,並且在類中,方法的默認可見性是“朋友” - 在同一個包中看到。

在實現方法時,您無法縮小可見性,這是​​規則。

假設您有一個Printable接口,其中包含方法print()。

interface Printable{
   int MIN=5;
   void print();
}

現在因為該方法在接口內部聲明, 編譯器在方法之前隱式添加公共抽象 像這樣: - 編譯器的接口

現在因為方法被聲明為public,所以現在當你擴展方法時,你必須在方法之前添加public。

我想這可能會對你有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM