2011-06-22 125 views
0

如果有3類:繼承靜態數據

public abstract class BankAccount 
{ 
public static decimal IntrestRate { get; set; } 

}

public class SavingsAccount : BankAccount  
{ 
} 

public class SightDeposit : BankAccount  
{ 
} 

客戶端代碼:

SavingsAccount.IntrestRate = 3.0M; 
SightDeposit.IntrestRate = 1.0M; 
--> will override the value of SavingsAccount.IntrestRate 

所以需要實現它,如下所示

public abstract class BankAccount 
    { 
} 

public class SavingsAccount : BankAccount  
{ 
    public static decimal IntrestRate { get; set; } 
} 

public class SightDeposit : BankAccount  
{ 
    public static decimal IntrestRate { get; set; } 
} 

因此在所有派生類中重複IntrestRate :-(

有沒有辦法在基類中定義它一次,但仍然使程序的行爲,因爲它應該?

謝謝

克里斯

+4

爲什麼要將InterestRate定義爲靜態,如果您打算爲子類更改值? – Chandu

+1

你有一個錯字。它應該是「InterestRate」。 – 48klocs

回答

3

刪除static修飾符。

public abstract class BankAccount 
{ 
    public decimal IntrestRate { get; set; } 
} 
+0

但是IntrestRate是一個沒有鏈接到任何特定BankAccount實例的規範,它對於所有BankAccounts都應該是一樣的,這就是爲什麼它應該是靜態的否? – ChrisPeeters