Sınıf ve nesne yapımızı anlattık. Şimdi oluşturduğumuz nesneleri taşıyan daha doğrusu temsil eden referans değişkenlerinden bahsedelim. Referans değişkenleri nesnelerimizin kendisini değil bulunduğu noktayı taşır demiştik. Bu yüzden de normal değişkenler(değer tipi) gibi işlem göremezler. Referans değişkenleri atamada, değer tipi değişkenleri gibi davranmaz. Değer tipi değişkenler de, atama yapılırken sağdaki değişkenin değeri soldakine kopyalanır. Ancak referans değişkenlerinde soldaki değişken sağdaki değişkenin işaret ettiği nesneyi işaret etmesine neden olur. Yani referansı kopyalamış oluruz. Bu durum ilk bakışta fark yokmuş gibi gözükse de aslında önemli bir farktır. Bir örnekle açıklayalım;
Tasit otomobil = new Tasit(); Tasit motor = otomobil;
otomobil referans değişkeni oluşturup, motor referans değişkenine atadık. Bu durumda otomobil değişkeninin işaret ettiği nesneyi artık motor değişkeni de işaret ediyor. Bu durum, şu anlama geliyor; artık iki değişkende aynı nesneyi etkiliyor. Yani iki değişkende aynı nesne üzerinden işlem yapabilirler. Bu iki değişken aynı nesneyi işaret etse de değişkenlerden birine yeni bir değişken ataması yapıldığında, sadece atama yapılan değişken etkilenir. Ve artık yeni nesneyi işaret etmeye başlar. Mesela;
Tasit otomobil = new Tasit(); Tasit motor = otomobil; Tasit tir = new Tasit(); motor = tir;
motor, tir değişkeninin işaret ettiği nesne ile ilişkilendirilmiştir. Bu durumdan otomobil değişkeni etkilenmez. Şimdi tüm bu işlemleri tek bir örnekte görelim.
namespace OOP { public class Tasit { public String yakit;// Taşıtın yakıt tipi public int hiz; // Taşıtın Maximum hızı public String renk; // Taşıtın rengi public String marka; // Taşıtın markası // Taşıtın bilgilerini ekrana yazdıran metot public void tasitInfo() { String tasit = "Taşıtın markası: " + marka + " rengi: " + renk + " yakıt tipi: " + yakit + " maximum hızı: " + hiz; System.Console.WriteLine (tasit); } } class MainClass { public static void Main (string[] args) { // Taşıt tipinden otomobil nesnesini oluşturuyoruz Tasit otomobil = new Tasit (); // motor değişkeninin nesnesini otomobil ile ilişkilendirdik Tasit motor = otomobil; // otomobil'in hız değişkenine değer atıyoruz otomobil.marka = "BMW"; // Ekrana yazdıralım Console.WriteLine("Araç Markası " + otomobil.marka); Console.WriteLine(); // tir için nesnemizi oluşturduk ve ona da değer ataması yaptık Tasit tir = new Tasit(); tir.marka = "Volvo"; // Yeni değişkeni diğer değişkene atıyoruz motor = tir; // Çıktılarda otomobil değişkeninin bu atamadan etkilenmediğini görüyoruz Console.WriteLine("Otomobil Markası " + otomobil.marka); Console.WriteLine("Tır Markası " + tir.marka); Console.WriteLine("Motor Markası " + motor.marka); } } }