Java Programlamada Kalıtım(inheritance)

Bilindiği üzere kalıtım(inheritance) nesne yönelimli programlama dillerinin en önemli özelliklerinden biridir. Nesne yönelimli programlamaya daha önce “c# nedir?” adlı yazıda değinmiştim. Merak eden arkadaşlar buradan bakabilirler. C#’ ta da bunun örneklerini biliyorum ama bu yazımı java üzerine yazmamın sebebi, java sınavında arkadaşların da bir nebze olsun yararlanmasıdır. Bu konuyu anlayan biri için zaten dilin farketmediğini, her iki dile de benzer şekilde uygulanabileceğini de belirtmek istiyorum.

Konuya giriş yapmak gerekirse, kalıtım, kelime anlamından da anlaşıldığı gibi aynı özellikleri de barındırarak bazı özellikleri ile ana nesneden ayrılmak anlamına gelir programlama dillerinde. Geçenlerde arkadaşlarımdan birinin kalıtımı sorması üzerine bir anda güzel bir örnek canlanmıştı zihnimde. Bana göre güzel bir örnekti desem daha doğru olacak galiba. O örneği sizlerle de paylaşmak isterim. Kodlarla bir araba yapacağınızı düşünün. Arka tekerleklerin kodunu yazıyorsunuz. İçerdiği özellikleri belirtirsiniz. Şekil bakımından, gideceği yön bakımından düz gider vs… Sıra geldi ön tekerleklere. Ön tekerlekler de arka tekerleklerin özelliklerini taşır şekil bakımından, gideceği yön bakımından. Ama Ön tekerlekler kullanıcı tarafından kontrol edilebilir, sağa-sola döndürülebilir. İşte bu benzer özellikleri tekrar yazmak yerine arka tekerlek nesnesinden kalıtım alıp, sadece kullanıcı tarafından sağa-sola dönme metodunu yazarsak ön tekerleği de tamamlamış oluruz.

Nesne yönelimli programlamada kalıtım yukarıdaki örnekten ibarettir. Classlar classlardan, classlar interfacelerden kalıtım alabilir. Şu noktaya dikkat etmek gerekir ki, bir nesneden iki ayrı nesne kalıtım alabilir, ama bir nesne iki ayrı nesneden kalıtım alamaz.  Ne kadar implements anahtar sözcüğünün bir önceki cümleyi kapsayan bazı uygulamalarının, extend anahtar sözcüğünden küçük farklılıkları olsa da kalıtım almak için javada extends ve implements anahtar sözcükleri kullanılır. Yandaki örnekte de görüldüğü üzere, Student ve Employee classları, Person classından kalıtım alıyorlar. Olayın kodlama aşamasından da bir kaç örnek vermek istiyorum.

1. Kalıtım alıncak nesne bir class ise:

public class Person

{

}

public class Student extends Person

{

}

public class Employee extends Person

{

}

Kabaca kod bloğu bu şekilde olmalı. Kalıtım alırken kullanılan yapıya ve extends anahtar sözcüğüne dikkat! Yukarda da bahsettiğim gibi bir classtan iki ayrı class kalıtım aldı. Eğer kalıtım alacağımız nesne bir class değil de bir interface ise implements anahtar sözcüğü kullanarak kalıtım alınır. Aşağıdaki kod bloğundan bunu da inceleyebilirsiniz.

2. Kalıtım alıncak nesne bir interface ise:

public interface Person

{

}

public class Student implements Person

{

}

public class Employee implements Person

{

}

Bu yazımın da sonuna gelmiş bulunuyorum. Bu konuyu anlayanlar bir önceki yazıma göz atarlarsa konuyu pekiştirmiş olurlar.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir