2011-03-15 74 views
4

我在apex中有一個抽象類,其中有幾個屬性我想在子類中重寫。根據文檔,屬性支持覆蓋和虛擬訪問修飾符。但是,當我嘗試在父類或子類中使用它們中的任何一個時,我得到一個錯誤,指出變量不能標記爲虛擬/覆蓋。下面是導致此錯誤代碼的傳真:Salesforce 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; 
     } 
    } 
} 

不支持此功能,或者是有,我失去了一些東西?

在此先感謝。

回答

6

不幸的是,據我所知,這是在文檔中的錯誤。我只能將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; 
    } 
} 
+0

這是我落得這樣做,但我希望有一個更清潔的方式,我剛剛弄亂的東西與語法一起。 – 2011-03-18 04:09:07

+0

在Visualforce中使用2種方式進行綁定是否可行?它可以綁定到輸入字段嗎? – NSjonas 2016-06-03 21:03:43