1. 程式人生 > >錯誤: Bus中的charge()無法實現MoneyFare中的charge() , 正在嘗試分配更低的訪問許可權; 以前為public

錯誤: Bus中的charge()無法實現MoneyFare中的charge() , 正在嘗試分配更低的訪問許可權; 以前為public

【原始碼】

abstract class MotorVehicles{
    abstract void brake();
}
interface MoneyFare{
    void charge();
}
class Bus extends MotorVehicles implements MoneyFare{
    void brake(){
        System.out.println("公交車使用鼓式剎車技術");    
    }
    void charge(){
        System.out.println("公交車:");     
    }
}
class Cinema implements MoneyFare{
    public void charge(){
        System.out.println("電影院:");    
    }
}
public class Application{
    public static void main(String args[]){
        Bus bus1=new Bus();
        Cinema redStarCinema=new Cinema();
        bus1.brake();
        bus1.charge();
        redStarCinema.charge();
    }
}

【錯誤原因】

所有的抽象方法的訪問許可權一定都是public(允許省略public、abstract修飾符),所以此處Bus裡面的void charge()應該加上public。

【介面實現】

介面由類來實現,即由類來重寫介面中的方法,一個類可以在類宣告中使用關鍵字implements宣告實現一個或多個介面。如果類實現多個介面,用逗號隔開介面名,如A類實現Printable和Addable介面:

class A implements Printable,Addable

如果一個非抽象類實現了某個介面,那麼這個類必須重寫這個介面中的所有方法。需要注意的是,由於介面中的方法一定是public abstract方法,所以

類在重寫介面方法時不僅要去掉abstract修飾符、給出方法體,而且方法的訪問許可權一定要明顯地用public來修飾(否則就降低了許可權,這是不允許的)。