Türemiş sınıf türünden bir nesne yalnızca kendi elemanlarını değil, taban sınıfın veri elemanlarını da tutmaktadır. Anımsanacağı gibi bir sınıfın veri elemanları bellekte ardışıl bir blok oluşturmaktadır. İşte türetme durumunda türemiş sınıfın veri eleman bloğu ile taban sınıfın veri eleman bloğu, ardışıl bir blok oluşturmaktadır. Yukarıda yani düşük adreste taban sınıf eleman bloğu, yüksek adreste türemiş sınıfın eleman bloğu bulunur.
Örneğin:
B b=new B();
Görüldüğü gibi new B() işlemi yaptığımızda, nesnenin bütünü B nesnesidir. Fakat bu B nesnesi iki alt parçadan oluşmaktadır. New Operatörü bize tüm nesnenin başlangıç adresini vermektedir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
using System; using System.Windows.Forms; namespace CSD { class App { public static void Main() { B b = new B(); } } class A { public int m_x; public int m_y; } class B : A { public int m_z; public int m_k; } } |
Türetme işleminde taban sınıfın elemanları, türemiş sınıfın elemanlarıymış gibi işlem görür. Şüphesiz türemiş sınıf, taban sınıfa erişebilmektedir. Fakat taban sınıf türemiş sınıfa erişmemektedir. Yani biz türemiş sınıf içerisinde hem türemiş sınıfın hem de taban sınıfın elemanlarını kullanabiliriz. Fakat taban sınıfın içerisinde, türemiş sınıfın elemanlarını kullanamayız, yalnızca taban sınıfın elemanlarını kullanabiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
using System; using System.Windows.Forms; namespace CSD { class App { public static void Main() { B b = new B(); b.m_x = 100; b.m_y = 200; b.m_k = 300; b.m_z = 400; b.DispA(); b.DispB(); } } class A { public int m_x; public int m_y; public void DispA() { Console.WriteLine("{0} {1}", m_x, m_y); } } class B : A { public int m_k; public int m_z; public void DispB() { Console.WriteLine("{0} {1}", m_z, m_k); } } } |
Kaynak:Kaan Aslan Hocanın Dersinde Tuttuğum Ders Notlarıdır.