Hier habe ich Special Customer class
geschrieben, die child class
ist und i overridden Property Cname
haben, wo ich Spezial Kunden wünschen kann den Namen nur ändern, wenn sie Cname="Special"
aber zur Zeit ist es nicht es geht zu base Cname property
geschieht, die Balance Überprüfung ist (was ich don‘ t wollen für Special Customer class
) und pls lassen sie mich wissen, wenn ich Runtime Polymorphism
durch diesen Code am ErreichenEigenschaft überschreiben funktioniert nicht in C#?
class Customer
{
protected int _cid,_bal,_status;
protected string _cnmae;
public Customer(int _cid,int _bal,int _status,string _cname)
{
this._cid = _cid;
this._bal = _bal;
this._cnmae = _cname;
this._status = _status;
}
public int Cid
{ //read only property
get
{return _cid;}
}
public virtual string Cname
{
get
{return _cnmae;}
set
{
if (_status != 0 & _bal >= 500)
{_cnmae = value;}
}
}
public int Bal
{
get
{return _bal;}
set
{
if (_status != 0 & value >= 500)
{ _bal = value;}
}
}
public int Status
{
get{ return _status;}
set
{_status = value;}
}
public virtual void display()
{
Console.WriteLine("id={0} and name={1} and balance={2} and status={3}", _cid, _cnmae,_bal,_status);
}
}
class Specialcustomer:Customer
{
public Specialcustomer(int _cid, int _bal, int _status, string _cname) :base(_cid, _bal, _status,_cname)
{
}
public override string Cname
{
get
{return base.Cname}
set
{if (value == "SPECIAL")
{
base.Cname = value;
}
}
}
public override void display()
{
Console.WriteLine("id={0} and name={1} and balance={2} and status={3}", _cid, _cnmae, _bal, _status);
}
}
class Program
{ static void Main(string[] args)
{
Customer C1 = new Specialcustomer(10, 400, 1, "BOND");
C1.display();
C1.Cname = "SPECIAL";
C1.display();
Console.ReadKey();
}
}
Abgesehen von allem anderen, wäre jetzt eine gute Zeit, um über automatisch implementierte Eigenschaften zu lernen - Sie könnten hier eine Menge Code speichern. Ich würde auch vorschlagen, dass, wenn eine Eigenschaft nicht auf einen Wert festgelegt werden kann, es in der Regel besser ist, eine Ausnahme auszulösen, als den Wert einfach unbeaufsichtigt zu ignorieren. –
(Ich würde auch folgende .NET-Namenskonventionen empfehlen.) –
pls stop -ve Voting !! –