我在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;
}
}
}
是否不支持此功能,或者是否存在我遗漏的内容?
提前致谢。
答案 0 :(得分:7)
不幸的是,据我所知,这是文档中的错误。我只能将override
和virtual
修饰符应用于方法。当然,您可以通过手动编写属性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;
}
}