Implementering av arv och polymorfism i enhetskod
Genom att implementera arv och polymorfism i kod kan du skapa mer specialiserade klasser baserade på befintliga klasser, och behandla objekt av olika klasser som objekt av en gemensam basklass. Detta främjar kodåteranvändning, flexibilitet och utökningsbarhet. Här är ett exempel på implementering av arv och polymorfism i Unity:
Arv
Arv uppnås genom att skapa en ny klass (underordnad eller härledd klass) baserat på en befintlig klass (förälder eller basklass). Den underordnade klassen ärver den överordnade klassens attribut och metoder och kan lägga till sina egna unika attribut och metoder eller modifiera de befintliga. Här är ett exempel:
// Base class
public class Shape
{
public virtual void Draw()
{
Debug.Log("Drawing a shape...");
}
}
// Derived class
public class Circle : Shape
{
public override void Draw()
{
Debug.Log("Drawing a circle...");
}
}
I det här exemplet är klassen 'Shape' basklassen, och klassen 'Circle' härleds från den. Metoden 'Draw()' är definierad i båda klasserna, men klassen 'Circle' åsidosätter metoden för att tillhandahålla sin egen implementering. Detta gör att du kan specialisera beteendet för klassen 'Circle' samtidigt som du bibehåller det delade beteendet som definieras i klassen 'Shape'.
Polymorfism
Polymorfism tillåter att objekt av olika klasser behandlas som objekt av en gemensam basklass, vilket ger flexibilitet och tillåter kod som fungerar på objekt generiskt. Här är ett exempel:
void DrawShapes(Shape[] shapes)
{
foreach (Shape shape in shapes)
{
shape.Draw();
}
}
// Usage
Shape[] shapes = new Shape[] { new Circle(), new Shape() };
DrawShapes(shapes);
I det här exemplet accepterar metoden 'DrawShapes()' en array av objekt 'Shape'. Den itererar över arrayen och anropar metoden 'Draw()' på varje objekt. Arrayen innehåller ett objekt 'Circle' och ett basobjekt 'Shape'. Men eftersom klassen 'Circle' åsidosätter metoden 'Draw()', anropas lämplig implementering för varje objekt baserat på dess faktisk typ vid körning. Detta visar polymorfism i aktion.
Slutsats
Genom att utnyttja arv och polymorfism i din Unity-kod kan du skapa specialiserade klasser baserade på befintliga, definiera delade beteenden i basklasser och skriva kod som fungerar på objekt generellt, ger flexibilitet och främjar återanvändning av kod.