【问题标题】:"is not abstract and does not override abstract method java" using Decorator Pattern使用装饰器模式“不是抽象的,也不会覆盖抽象方法 java”
【发布时间】:2015-08-28 20:11:14
【问题描述】:
public abstract class AdicionalesCpd extends Cpd{
public abstract int getCpu();
public abstract int getRam();
public abstract int getDisco();
public abstract String getCadena();}

这是我的装饰器模式的抽象类,我在编译时遇到了这个问题:

**错误:Cpu 不是抽象的,并且没有覆盖 AdicionalesCpd 中的抽象方法 getCadena()

公共类 Cpu 扩展 AdicionalesCpd{ ** 不知道为什么不覆盖方法“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;

}

}

【问题讨论】:

  • 确实覆盖getCpu - 它不会覆盖getCadena,就像错误消息中所说的那样......你需要覆盖all i> 抽象方法...
  • 你需要实现抽象类中的所有方法。

标签: java design-patterns overriding decorator


【解决方案1】:

您的抽象基类型定义了四个抽象方法:

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

您的具体派生类型实现了其中之一:

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

错误告诉您必须实现所有这些。否则,当代码在具体类型的实例上调用其中一种方法时会发生什么?

【讨论】:

  • 谢谢大卫,就是这样;)问题解决了
猜你喜欢
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
  • 2014-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多