Inheritance

Bir object in özelliklerinin farklı object ler tarafından da kullanılabilmesine olanak sağlayan bir özelliktir.

class Person {
        public string Name { get; set; }
        public string Surname { get; set; }
        public Person(string name, string surname)
        {
            this.Name = name;
            this.Surname = surname;
            Console.WriteLine("Person oluşturuldu");
        }

        public virtual void Intro(){
            Console.WriteLine(this.Name + " " + this.Surname);
        }

    }

    class Student:Person{
        public int StudentNumber { get; set; }
        public Student(string name, string surname, int studentNumber):base(name,surname)
        {
            this.StudentNumber = studentNumber;
            Console.WriteLine("Student oluşturuldu");
        }

        public override void Intro(){
            Console.WriteLine(this.Name + " " + this.Surname + " " + this.StudentNumber);
        }
    }

    class Teacher:Person {
        public string Branch { get; set; }
        public Teacher(string name, string surname, string branch):base(name,surname)
        {
            this.Branch = branch;
        }
        public void Teach(){
            Console.WriteLine("Hoca camide");
        }

        public override void Intro(){
            Console.WriteLine(this.Name + " " + this.Surname + " " + this.Branch);
        }
    }

    class Program
    {

        static void Main(string[] args)
        {
            var p = new Person("Ahmet", "Can");
            var s = new Student("Kübra", "Şimşek",135);
            var t = new Teacher("Adem","Can","Bilişim");

            p.Intro();
            s.Intro();
            t.Teach();
            t.Intro();

}

/*
Çıktısı

Person oluşturuldu
Student oluşturuldu
Person oluşturuldu
Ahmet Can
Kübra Şimşek 135
Hoca camide
Adem Can Bilişim
*/

base: Miras aldığımız sınıftan kullanacağımız propertyleri belirtmek için kullanılır. Yukarıdaki kod bloğunda name ve surname alanları Person class ından gelmiştir.

virtual & override: Miras alınan ve miras alan class ta aynı isimde bir method varsa bu methodlar kullanılır. Miras alınan class a virtual yazarak, miras alan class ın bu methodu override ile ezebilmesini yani değiştirebilmesini sağlarız. Eğer override yaptığımız methodda temel methodu kullanmak istersek base methodunu kullanabiliriz. base bize önce miras alınan yerdeki methodu çalıştırırken ardından override edilmiş methodu çalıştırır.

Last updated