Переопределение свойств из абстрактного класса в Salesforce Apex - PullRequest
4 голосов
/ 15 марта 2011

У меня есть абстрактный класс в 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 Ответ

7 голосов
/ 17 марта 2011

К сожалению, насколько я знаю, это ошибка в документации.Я только смог применить модификаторы override и virtual к методам.Конечно, вы можете получить желаемый эффект, написав вручную методы получения / установки свойств:

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;  
    }
}
...