覆盖Salesforce Apex中抽象类的属性

时间:2011-03-15 19:09:21

标签: properties salesforce apex-code

我在apex中有一个抽象类,我想在子类中覆盖几个属性。根据文档,属性支持覆盖和虚拟访问修饰符。但是,当我尝试在父类或子类中使用它们中的任何一个时,我得到一个错误,指出变量不能标记为虚拟/覆盖。以下是导致此错误的代码的传真:

public abstract class Row{
    public virtual double value{
        get{return value==null ? 0 : value;}
        set;
    }
}

public class SummaryRow extends Row{
    private list<Row> childRows;
    public override double value{
        get{
            totalValue = 0;
            for(Row childRow:childRows){
                totalvalue += childRow.value;
            }
            return totalValue;
        }
    }
}

是否不支持此功能,或者是否存在我遗漏的内容?

提前致谢。

1 个答案:

答案 0 :(得分:7)

不幸的是,据我所知,这是文档中的错误。我只能将overridevirtual修饰符应用于方法。当然,您可以通过手动编写属性getter / setter方法来获得所需的效果:

public abstract class TestRow {
    public Double value;

    public virtual Double getValue() {
        return value==null ? 0 : value;
    }

    public void setValue(Double value) {
        this.value = value;
    }
}

public class SummaryTestRow extends TestRow {
    private list<TestRow> childRows;

    public override Double getValue() {
        Double totalValue = 0;
        for(TestRow childRow : childRows){
            totalValue += childRow.value;
        }

        return totalValue;  
    }
}