2015-06-12 39 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

相关问题