2015-06-12 67 views
-1
public abstract class AdicionalesCpd extends Cpd{ 
public abstract int getCpu(); 
public abstract int getRam(); 
public abstract int getDisco(); 
public abstract String getCadena();} 

這是我的裝飾圖案抽象類,而當它編譯我有這樣的問題:「不是抽象的,不重寫抽象方法的Java」使用裝飾模式

**error: Cpu is not abstract and does not override abstract method getCadena() in AdicionalesCpd

public class Cpu extends AdicionalesCpd{ ** I don't know why doesn't override the method "getCpu"

這是我的CPU類,這是一個「裝修」,在圖案

public class Cpu extends AdicionalesCpd{ 

Cpd cpd; 
int var; 

public Cpu(Cpd cpd,int var) 
{ 
    this.cpd=cpd; 
    this.var=var; 
} 

@Override 
public int getCpu() { 

    return cpd.getCpu()+var; 

} 

} 
+0

它*不覆蓋'getCpu' - 它不會覆蓋'getCadena',就像錯誤信息說的那樣...您需要覆蓋*所有*抽象方法... –

+0

您需要實現所有方法來自抽象類。 – user123

回答

3

你的抽象基類定義了四個抽象方法:

public abstract int getCpu(); 
public abstract int getRam(); 
public abstract int getDisco(); 
public abstract String getCadena(); 

你具體的派生類型實現了其中的一個:

@Override 
public int getCpu() { 
    return cpd.getCpu()+var; 
} 

錯誤是告訴你,你必須實現所有的人。否則,當代碼在具體類型的實例上調用其中一種方法時會發生什麼?

+0

謝謝大衛,就是這樣;)解決問題 – Sergio

相關問題