Explore Courses Blog Tutorials Interview Questions
0 votes
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;}




public class SummaryRow extends Row{

    private list<Row> childRows;

    public override double value{


            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;  



Welcome to Intellipaat Community. Get your technical queries answered by top developers!

30.5k questions

32.5k answers


108k users

Browse Categories