Java ile Nesne Yönelimli Programlama | Inheritance ve Overriding

 

 

Yazan: Furkan BAYSAN

Kalıtım (Inheritance) Nedir?

Inheritance (kalıtım), bir sınıfın (subclass), başka bir sınıfın (superclass-baseclass) özellik (attribute) ve eylemlerine (activity) erişebilmesidir. Başka bir deyişle, üst sınıfın (superclass) özellik ve eylemlerinin alt sınıfına (subclass) geçmesidir.

Kalıtım  (Inheritance)  Nerde ve Ne Zaman Kullanılmalıdır?

Hiyerarşik (Hierarchic) yapıda yer alan farklı nesnelerin (objects) birbiriyle iletişim kurmasını istediğimiz durumlarda kullanılır.

Kalıtım (Inheritance) Konseptinin Kullanılma Şartı Nedir?

  • Farklı nesneler (objects), hiyerarşik (Hierarchic) yapıda yer alıyorsa inheritance vardır.
  • Farklı nesneler arasında -dır , -dir ilişkisi (IS-A relationship) varsa, inheritance vardır.

Üst sınıf (Superclass-Baseclass) ve Alt Sınıf (Subclass) Nedir?

→  Üst sınıf (Superclass-Baseclass): Alt sınıf (subclass) tarafından özellik ve eylemleri kalıtım alınan (inherit edilen) sınıftır.

→ Alt sınıf (Subclass): Üst sınıfın (superclass-baseclass), özellik ve eylemlerini inherit eden sınıftır.

IS-A Relationship Examples:

Bilgisayar mühendisi bir mühendistir.

Yazılım mühendisi bir mühendistir.

İnşaat mühendisi bir mühendistir.

Endüstri mühendisi bir mühendistir.

Mühendis bir çalışandır.

Analist bir çalışandır.

Müdür bir çalışandır.


Kalıtımın Özellikleri (Features of Inheritance)

  • Extends anahtar kelimesiyle (keyword) sağlanır.
  • Alt sınıf (Subclass), tanımı itibariyle üst sınıftan (superclass) daha geniş bir kavramdır. 
  • Java,  single level, multilevel ve hieararchical kalıtıma olanak verirken, çoklu kalıtıma (multiple inheritance) izin vermez. Bu görev, interface konsepti kullanılarak sağlanır.
  • Üst sınıfın (superclass) , private olarak tanımlanan özellik (attribute) ve eylemlerine (activities), alt sınıftan (subclass) erişilemez.

Kalıtımın Avantajları (Advantages of Inheritance)

  • Kalıtımın en önemli avantajı, overriding ile birlikte run-time polymorphism’e olanak sağlamasıdır.
  • Reusability of code ( Kodun tekrar kullanılabilirliği)
  • More Readable Program Structure (Okunabilir Program Yapısı)

Kalıtımın Sağlanması ile İlgili Önemli Terminolojiler( Important Terminology usage for providing Inheritance)

  1. Super Keyword
  • Super anahtar kelimesinin özellikler(değişkenler) ile kullanımı (Use of “super” with attributes) : 

→ Alt sınıfın (subclass), üst sınıfı (superclass) inherit ederek barındırdığı özellikleri kendi tanım aralığında kullanırken, üst sınıftaki (superclass) özelliği (attribute) kast etmesine ve kullanmasına olanak tanır.

  • Super anahtar kelimesinin metotlar ile kullanımı (Use of “super” with methods):

→Alt sınıfın (subclass), üst sınıfı (superclass) inherit ederek barındırdığı metotları kendi tanım aralığında kullanırken, üst sınıftaki (superclass) eylemleri (activities) kast etmesine ve kullanmasına olanak tanır.

  • Super() anahtar kelimesinin constructorlar ile kullanımı (Use of “super” with constructors):

Alt sınıfın (subclass) yapıcı fonksiyonunda (constructor), üst sınıfın( superclass-baseclass) yapıcı fonksiyonu (constructor) çağrılarak, alt sınıfın (subclass) özellikleri yapılandırılabilir.


2.Final Keyword

  • Bir sınıfı (class) final olarak tanımlarsak, o sınıf inherit edilemez. (prevent inheritance)
  • Bir metodu final olarak tanımlarsak, override edilemez. (prevent overriding)

Method Overriding

Overriding Nedir?

→ Üst sınıfta (superclass- baseclass) tanımlanmış bir metodun , imzası( signature) aynı kalıcak şekilde alt sınıfta (subclass) gövdesinin yeniden tanımlanması, spesifik implementasyonudur.

Overriding Özellikleri

  • Aralarında IS-A relationsahip ( -dır, -dir ilişkisi ) olan iki farklı sınıf arasında gerçekleştirilir.
  • Override edilen metodun ismi (method name) ve parametre listesi (parameter list), üst sınıfta (baseclass) tanımlanan metot ile aynı olmalıdır.
  • Run-time polymorphism’e olanak verir.
  • Override edilen metodun döndürdüğü değerin tipi (return type) , üst sınıfta (baseclass) tanımlanan metot ile aynı olmalıdır.
  • Final anahtar kelimesi (keyword) ile tanımlanmış metodlar override edilemez.
  • Statik metotlar (static methods) override edilemez.

 

 

 

 

 

 

 

 

 

 

 

 

Bahcesehir University Computer Engineering Full Time Extrovert and Developer
Yazı oluşturuldu 9

Bir cevap yazın

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

Benzer yazılar

Aramak istediğinizi üstte yazmaya başlayın ve aramak için enter tuşuna basın. İptal için ESC tuşuna basın.