Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Salesforce by (11.9k points)

I have an abstract class in apex with several properties that I would like to override in a child class. According to the documentation, properties support both the override and virtual access modifiers. However, when I try to use either of them in either the parent or child class, I get an error saying that variables cannot be marked as a virtual/override. Here is a facsimile of the code that causes this error:

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;

        }

    }

}

Is this functionality not supported, or is there something that I am missing?

Thanks in advance.

1 Answer

0 votes
by (32.1k points)

You can apply the override and virtual modifiers to methods. You can get the aspired effect by manually writing your property getter/setter methods:

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;  

    }

}

31k questions

32.8k answers

501 comments

693 users

Browse Categories

...