Inheritance Nedir? (C#)

Inheritance, class özelliklerini başka bir class’a aktarmaya denir. Ortak olan özellikler Base class’ında oluşturulur. Böylece alt class’lar onu istediği gibi kullanabilir ve farklı özellikleri de kendi classlarında oluşturabilirler. Haydi başlayalım!

Öncelikle Base bir class oluşturuyoruz. Ardından gerekli değişkenleri oluşturuyoruz. Böylece bu değişkenler, inherit edilen classlarda kullanılabilir. (sadece inherit edilen classların değişkenlere ulaşabilmesi için public yerine protected access modifier’ını kullanabiliriz.)

public class Hero
{
public string HeroName {get;set; }
public int Damage {get; set; }
public int AttackSpeed {get; set; }
public int Health {get; set; }


public void Info()
    {
Debug.Log("Hero name: " + HeroName);
Debug.Log("Damage : " + Damage);
Debug.Log("Attackspeed : " + AttackSpeed);
    }

}

Ardından başka bir class’da Hero şeklinde inherit ediyoruz. MonoBehaviour yerine o class’ın ismini yazıyoruz.

public class AgilityHeroes : Hero

Ardından bu class içerisinde Constructor oluşturuyoruz. Böylece başka yerden bu objeyi oluşturabiliriz.

public AgilityHeroes(string name,int damage,int attackspeed)
{ 

HeroName = name;
Damage = damage;
AttackSpeed = attackspeed;
AgilityHeroesList.Add(this); // her obje oluşturulduğunda o objeyi listeye ekle
PrintAgilityHeroes();

}

public void PrintAgilityHeroes()
{
foreach(var hero in AgilityHeroesList)
    {
hero.Info();
    }
}

Kullanmak istediğimiz yerde bu oluşturduğumuz constructorları çağırabilir, istediğimiz değişkene sahip objeyi oluşturabiliriz.

public class AllHeroes: MonoBehaviour
{

private void Start()
    {

AgilityHeroes antiMage = new AgilityHeroes("Anti Mage",65,190);
AgilityHeroes shadowFiend = new AgilityHeroes("Shadow Fiend",65,200);
AgilityHeroes luna = new AgilityHeroes("Luna ",60,220);

//CREATE STRENGTH HEROES
StrengthHeroes axe = new StrengthHeroes("Axe",55,170,1200);
StrengthHeroes beastMaster = new StrengthHeroes("Beastmaster",50,165,1000);
StrengthHeroes underlord = new StrengthHeroes("Underlord",70,155,1100);

    }

Gelecek yazıda, polymorphism(virtual & override), abstract, ve interface terimlerine değineceğim. 🙂