C++ ve Java Inheritance

Kurtbeyi

Misafir Editör
Katılım
5 Şubat 2022
Mesajlar
501
Tepkime puanı
44
Konum
istanbul
Cinsiyet
  1. Bay
Takım
Fenerbahçe
Bu yazıda C++ ile Java inheritance olaylarını anlatıp aradaki farklılıklardan bahsedeceğim. Öncelikle inheritance ne demek ona bakalım.

Inheritance; daha önceden yazılmış olan herhangi bir classdan başka bir class türetme işlemine inheritance denir. Türkçe karşılığı mirastır. Sonradan yazılan class daha önce yazılan classı temel aldığı için bu isim uygun görülmüştür.



C++ Inheritance

C++ dilinde 3 türlü inheritance olayı mevcuttur.

1 ) public inheritance
2 ) protected inheritance
3 ) private inheritance



Temel olarak public inheritanceı anlatacağım, yazının sonunda da 3 türün farklarını yazacağım. Bir örnek üzerinden giderek anlamaya çalışalım.

BaseClass : classA



Görüldüğü üzere classA classında bazı fonksiyonları virtual yaptık. Virtual demek, bir sonraki derivation ( türetme ) işleminde bu fonksiyonlar isteğe bağlı olarak override ( yeniden yazma ) edilebilir demektir.

Derived class : classB



Yukarıdaki kod örneği de classBnin implementation dosyasına ait. Normal bir implementation dosyasından bir kaç farkı var. Birincisi member initializer olayı. Eğer biz base classımızın constructorını default yapmazsak derived classın constructorında member initializer syntaxı kullanarak baseclass constructorına parametre yollamamız gerekmektedir. Eğer bunu yapmazsak veya derived class içerisinde herhangi bir classA objecti oluşturarak yollamaya çalışırsak bu bir syntax error verecektir. İkinci ise classB set ve get fonksiyonlarına sahip olmasına rağmen implement edilmemeleridir.
Son olarak ;

public inheritance :

class classB : public classA ifadesinde classB classAdan public olarak türemiştir. Bu inheritance şeklinde classB classAnın private hariç tüm kısımlarını kendisinin public kısımı gibi miras alır.

protected inheritance :

class classB : protected classA ifadesinde classB classAdan protected olarak türemiştir. Bu inheritance şeklinde classB classAnın private hariç tüm kısımlarını kendisinin protected kısımı gibi miras alır.

private inheritance :

class classB : private classA ifadesinde classB classAdan private olarak türemiştir. Bu inheritance şeklinde classB classAnın private hariç tüm kısımlarını kendisinin private kısımı gibi miras alır.

Java Inheritance

Javada tek türlü inheritance olayı mevcuttur, o da public inheritance. Bu nedenle bir classtan başka bir class türetilirken inheritance şekli yazılmaz. C++ daki base class

Javada super class, derived class ise subclass olarak geçer. Bir örnek üzerinde inceleyerek görelim.

Ve ondan türemiş bir subclass :


Görüldüğü gibi extends keywordu ile inheritance olayı gerçekleştirilmiştir. Artık classBnin de set ve get metotları mevcut. C++ daki base class constructor çağırılması burada super keyword une denk gelmektedir. C++ da member initializer kullanırken, burada super içerisine parametre verdik. Ayrıca super ifadesi constructor içerisinde ilk sırada yer almak zorundadır, eğer bu şart sağlanmazsa compile time error oluşur.



C++ ve Java arasındaki inheritance olayının en büyük farklarından birisi de C++ dilinde multi implementation inheritance ın olup Javada olmamasıdır. Fakat multi interface inheritance olayı her iki dilde de mevcuttur.
 

Benzer konular

İçerik sağlayıcı "paylaşım" sitelerinden biri olan Harbimekan.Com Forum, Eğlence ve Güncel Paylaşım Platformu Adresimizde 5651 Sayılı Kanun’un 8. Maddesine ve T.C.K’nın 125. Maddesine göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur. Harbimekan.Com sitesindeki konular yada mesajlar hakkında yapılacak tüm hukuksal Şikayetler için info@harbimekan.com yada iletişim sayfası üzerinden iletişime geçilmesi halinde ilgili kanunlar ve yönetmelikler çerçevesinde en geç 3 Gün (72 Saat) içerisinde Forum yönetimi olarak tarafımızdan gereken işlemler yapılacaktır.

Bu Site, Bilim ve Sağlık Haber Ajansı Üyesidir.

Yığıntı - 8kez - kaynak mağazam - Uğur Ağdaş