Nivelul 5 — Moștenire
Suprascriere
Note originale de SunDiaL · Vezi sursa în engleză
Suprascrierea se aplică numai metodelor și proprietăților. Pentru suprascriere se folosesc patru cuvinte-cheie. Primele trei reprezintă modul obișnuit de a suprascrie comportamentul. Membrii suprascriși trebuie să aibă același tip returnat, aceeași semnătură și aceiași parametri.
abstract
Nu are implementare; impune suprascrierea.
Dacă o clasă are cel puțin un membru abstract, trebuie marcată și ea ca abstractă, ceea ce împiedică instanțierea.
O clasă abstractă care nu are nicio metodă implementată este numită uneori clasă „pur” abstractă.
virtual
Are implementare; suprascrierea este opțională.
override
Marchează suprascrierea.
Pe lângă this, cuvântul-cheie
basepoate fi folosit pentru a accesa membrii clasei de bază.
new
Ascunde membrul părintelui în spatele altuia.
Deși asemănător, acest cuvânt-cheie nu realizează o suprascriere propriu-zisă. Ascunde membrul părintelui în spatele altuia cu același nume. Tipul returnat sau parametrii pot însă să difere.
Exemplu
public class Shape
{
public abstract int Area()
}
public class Square : Shape
{
public int Length { get; set; }
public Square(int length)
{
this.Length = length
}
public override int Area()
{
return Length * Length;
}
}
public class Cube : Square
{
public Cube(int length) : base(length)
{
}
public override int Area()
{
return base.Area() * 6;
}
}
public class Circle : Shape
{
public Circle(int radius)
{
this.Radius = radius;
}
public int Radius { get; set; }
public override int Area()
{
return 3.14*Radius*Radius;
}
}
public void Main()
{
List<Shape> shapes = new List<Shape>();
shapes.Add(new Square(3));
shapes.Add(new Circle(5));
foreach(Shape shape in shapes)
{
Console.WriteLine(shape.Area());
}
}