digitalmars.D.learn - Abstract attribute ?
- Lucien (15/15) May 17 2016 Hello,
- Adam D. Ruppe (15/16) May 17 2016 Because it cannot be virtual and cannot be overridden. This is
- Lucien (2/18) May 17 2016 ok, thank you.
Hello, Why a attribute cannot be abstract ? How can I force the redefinition of an attribute if the class inherits from abstract class ? Example: ---------------- abstract class A { // Error: variable attr cannot be abstract protected abstract int attr; } class B : A { protected override int attr = 10; }
May 17 2016
On Tuesday, 17 May 2016 at 16:52:01 UTC, Lucien wrote:Why a attribute cannot be abstract ?Because it cannot be virtual and cannot be overridden. This is different than Python, but in line with other C-style languages (and the lower level implementation) Use a property function instead to achieve this. abstract class A { protected property abstract int attr(); // a getter for attr protected property abstract attr(int); // a setter for attr, if desired } class B : A { override property int attr() { return 0; } // implementation }
May 17 2016
On Tuesday, 17 May 2016 at 16:58:30 UTC, Adam D. Ruppe wrote:On Tuesday, 17 May 2016 at 16:52:01 UTC, Lucien wrote:ok, thank you.Why a attribute cannot be abstract ?Because it cannot be virtual and cannot be overridden. This is different than Python, but in line with other C-style languages (and the lower level implementation) Use a property function instead to achieve this. abstract class A { protected property abstract int attr(); // a getter for attr protected property abstract attr(int); // a setter for attr, if desired } class B : A { override property int attr() { return 0; } // implementation }
May 17 2016