[英]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.