Sınıflar Atamak

Struct Nedir

Bir sınıf türü kullanarak bir değişken bildirmek ve sonra bir nesne yaratarak bu değişkene atamak için aşağıdaki söz dizimi kullanılır. Aşağıdaki hiyerarşik yapıya sahip olunsun.

    class Insan
    {
        // Temel sınıf üyeleri
        public double Boy, Kilo;
        public string Ad;

        public Insan(string ad) // Temel sınıf için kurucu metot
        {
            this.Ad = ad;
            this.Boy = 0.45;
            this.Kilo = 3.5;
        }

        public void Buyut()
        {
            Boy += 0.5;
            Kilo += 0.5;
        }
    }

    class Ogrenci : Insan
    {
        // Türetilmiş sınıf üyeleri
        public Ogrenci(string ad)
            :base(ad) // Insan(ad) temel sınıf kurucu metodunu çağırır.
        {
           
        }

        new public void Buyu()
        {
            this.Boy += 1.5;
            this.Kilo += 1.5;
        }

        public void Oku()
        {
            // Oku metodu kodları
        }
    }

    class Ogretmen : Insan
    {
        public Ogretmen(string ad)
            :base(ad)
        {

        }
    }

Şöyle bir bildirim ve atama gerçekleştirebiliriz.

Ogrenci birOgrenci = new Ogrenci("Veli Pınar");

Burada birOgrenci değişkeni Ogrenci türünde bildiriliyor ve new sözcüğü ile oluşturulan nesne birOgrenci değişkenine atanıyor.

Programlama dilindeki tür denetim kuralları bir türdeki nesneyi farklı bir türde bildirilmiş bir değişkene atamaya izin vermez.

Ogrenci birOgrecni = new Ogrenci("Veli Pınar");
Ogretmen birOgretmen = birOgrecni; // HATA!

Yukarıdaki örnek derleme zamanı hatasına neden olur. Derleyici Ogrenci‘nin Ogretmen‘e açıkça dönüştürülemeyeceğini bildiren bir hata mesajı görüntüler.

Bunun yanı sıra tür olarak kalıtım hiyerarşisinin üst sırasında yer alan bir türde tanımlanmış bir değişkene alt sıradaki bir türde oluşturulmuş nesne atanabilir. Örneğin;

Ogrenci birOgrecni = new Ogrenci("Veli Pınar");
Insan birInsan = birOgrenci; // Geçerli bir atama.

Ogrenci sınıfından tanımlanmış birOgrenci, Insan sınıfından tanımlanmış birInsan değişkenine atanabilir çünkü Insan sınıfı hiyerarşinin üst sırasında yer almaktadır.

Aslında Ogrenci sınıfı Insan sınıfının tüm üyelerine sahip ve sadece birkaç fazlası vardır. Yalnız üstteki örnekte birInsan değişkeni aracılığıyla sadece ınsan sınıfının üyelerine erişilebilir. Yani Ogrenci sınıfındaki Oku metoduna erişmek mümkün olamaz.

Bir Cevap Yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.