how to change attribute in descendant?
novice2
sorry at noem.ail
Thu Jan 18 06:46:43 PST 2007
Hello.
I need declare some base class A with general functionality, then
more special descendants AA and AB.
"A" class have some fields, that i don't want "show", i make it
protected. Then in some descendant i need "open" it. I need change
it from "protected" to "public".
In Delphi i just redeclare it in descendant, but in "public"
section. Delphi allow change visibility of class members from low
to higher. Private->protected->public.
How i can do this in D?
/********* test.d ********/
import std.stdio;
//base class with general code
abstract class Animal
{
protected int legsCount;
protected int poisonStrength;
public bool canWalk()
{
return legsCount>0;
}
public bool canKill()
{
return poisonStrength>0;
}
}
//tiger = animal with legs without poison
class Tiger : Animal
{
public int legsCount;
}
//snake = animal without legs with poison
class Snake : Animal
{
public int poisonStrength;
}
void main()
{
Tiger t = new Tiger;
t.legsCount = 4;
writefln("tiger: legs=%d, canWalk=%d, canKill=%d", t.legsCount,
t.canWalk, t.canKill);
Snake s = new Snake;
s.poisonStrength = 100;
writefln("snake: poison=%d, canWalk=%d, canKill=%d",
s.poisonStrength, s.canWalk, s.canKill);
}
output:
tiger: legs=4, canWalk=0, canKill=0
snake: poison=100, canWalk=0, canKill=0
More information about the Digitalmars-d-learn
mailing list