Bu eğitici yazıda, örneklerin yardımıyla Java kalıtımı ve türleri hakkında bilgi edineceğiz.
Kalıtım, mevcut bir sınıftan yeni bir sınıf oluşturmamızı sağlayan OOP'nin temel özelliklerinden biridir.
Oluşturulan yeni sınıf, alt sınıf (alt sınıf veya türetilmiş sınıf) olarak bilinir ve alt sınıfın türetildiği mevcut sınıf, üst sınıf (ana veya temel sınıf) olarak bilinir .
extends
Anahtar kelime Java devralma gerçekleştirmek için kullanılır. Örneğin,
class Animal ( // methods and fields ) // use of extends keyword // to perform inheritance class Dog extends Animal ( // methods and fields of Animal // methods and fields of Dog )
Yukarıdaki örnekte, Dog sınıfı, yöntemler ve alanlar Animal sınıfından miras alınarak oluşturulur.
Burada, Köpek alt sınıf, Hayvan ise süper sınıftır.
Örnek 1: Java Kalıtımı
class Animal ( // field and method of the parent class String name; public void eat() ( System.out.println("I can eat"); ) ) // inherit from Animal class Dog extends Animal ( // new method in subclass public void display() ( System.out.println("My name is " + name); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // access field of superclass labrador.name = "Rohu"; labrador.display(); // call method of superclass // using object of subclass labrador.eat(); ) )
Çıktı
Benim adım Rohu yiyebilirim
Yukarıdaki örnekte, Animal sınıfından bir alt sınıf Dog türettik. İfadelere dikkat edin,
labrador.name = "Rohu"; labrador.eat();
Burada labrador, Dog'un bir nesnesidir. Ancak, eat()
hayvan sınıfının adı ve üyeleridir.
Köpek, alanı ve yöntemi Animal'den devraldığı için, Dog'un nesnesini kullanarak alana ve yönteme erişebiliyoruz.

bir ilişki
Java'da kalıtım bir ilişkidir. Yani, kalıtımı yalnızca iki sınıf arasında bir is-a ilişkisi varsa kullanırız. Örneğin,
- Araba bir Araçtır
- Portakal bir Meyvedir
- Cerrah bir doktordur
- Köpek bir Hayvandır
Burada, Araba dan devralabilir Araç , Portakal dan devralabilir Meyve vb, vb.
Java Devralmada Yöntemi Geçersiz Kılma
İçinde , Örnek 1 , biz alt sınıfın bir amacı üst sınıf yöntemini erişebilir bkz.
Bununla birlikte, aynı yöntem hem üst sınıfta hem de alt sınıfta mevcutsa ne olur?
Bu durumda, alt sınıftaki yöntem, üst sınıftaki yöntemi geçersiz kılar. Bu kavram, Java'da yöntemi geçersiz kılma olarak bilinir.
Örnek 2: Java Devralmada yöntemi geçersiz kılma
class Animal ( // method in the superclass public void eat() ( System.out.println("I can eat"); ) ) // Dog inherits Animal class Dog extends Animal ( // overriding the eat() method @Override public void eat() ( System.out.println("I eat dog food"); ) // new method in subclass public void bark() ( System.out.println("I can bark"); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // call the eat() method labrador.eat(); labrador.bark(); ) )
Çıktı
Havlayabildiğim köpek maması yerim
Yukarıdaki örnekte, eat()
yöntem hem Hayvan üst sınıfında hem de Köpek alt sınıfında mevcuttur.
Burada bir Labrador of Dog nesnesi yarattık.
Şimdi eat()
labrador nesnesini kullanmaya çağırdığımızda , Dog'un içindeki yöntem çağrılıyor. Bunun nedeni, türetilmiş sınıfın içindeki yöntemin temel sınıf içindeki yöntemi geçersiz kılmasıdır.
Buna yöntemi geçersiz kılma denir. Daha fazla bilgi edinmek için Java Yöntemi Geçersiz Kılma sayfasını ziyaret edin.
Not : @Override
Ek açıklamayı derleyiciye bir yöntemi geçersiz kıldığımızı söylemek için kullandık . Ancak ek açıklama zorunlu değildir. Daha fazla bilgi edinmek için Java Ek Açıklamaları'nı ziyaret edin.
Java Mirasında süper Anahtar Kelime
Daha önce, alt sınıftaki aynı yöntemin, üst sınıftaki yöntemi geçersiz kıldığını görmüştük.
Böyle bir durumda, super
anahtar kelime, alt sınıfın yönteminden üst sınıfın yöntemini çağırmak için kullanılır.
Örnek 3: Devralmada süper Anahtar Kelime
class Animal ( // method in the superclass public void eat() ( System.out.println("I can eat"); ) ) // Dog inherits Animal class Dog extends Animal ( // overriding the eat() method @Override public void eat() ( // call method of superclass super.eat(); System.out.println("I eat dog food"); ) // new method in subclass public void bark() ( System.out.println("I can bark"); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // call the eat() method labrador.eat(); labrador.bark(); ) )
Çıktı
Yiyebilirim köpek maması yerim havlayabilirim
Yukarıdaki örnekte, eat()
yöntem hem temel Animal sınıfında hem de türetilmiş Dog sınıfında mevcuttur. İfadeye dikkat edin,
super.eat();
Burada super
anahtar kelime, eat()
süper sınıfta bulunan yöntemi çağırmak için kullanılır .
super
Alt sınıfın yapıcısından üst sınıfın yapıcısını çağırmak için de anahtar sözcüğü kullanabiliriz . Daha fazla bilgi edinmek için Java süper anahtar kelimesini ziyaret edin .
Miras Alınan Korumalı Üyeler
Java'da, bir sınıf protected
alanlar ve yöntemler içeriyorsa , bu alanlara ve yöntemlere sınıfın alt sınıfından erişilebilir.
Example 4: protected Members in Inheritance
class Animal ( protected String name; protected void display() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( public void getInfo() ( System.out.println("My name is " + name); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // access protected field and method // using the object of subclass labrador.name = "Rocky"; labrador.display(); labrador.getInfo(); ) )
Output
I am an animal. My name is Rocky
In the above example, we have created a class named Animal. The class includes a protected field: name and a method: display()
.
We have inherited the Dog class inherits Animal. Notice the statement,
labrador.name = "Rocky"; labrador.display();
Here, we are able to access the protected field and method of the superclass using the labrador object of the subclass.
Why use inheritance?
- The most important use of inheritance in Java is code reusability. The code that is present in the parent class can be directly used by the child class.
- Method overriding is also known as runtime polymorphism. Hence, we can achieve Polymorphism in Java with the help of inheritance.
Types of inheritance
There are five types of inheritance.
1. Single Inheritance
Tekli kalıtımda, tek bir alt sınıf, tek bir üst sınıftan uzanır. Örneğin,

2. Çok Düzeyli Kalıtım
Çok düzeyli kalıtımda, bir alt sınıf bir üst sınıftan genişler ve ardından aynı alt sınıf başka bir sınıf için bir üst sınıf görevi görür. Örneğin,

3. Hiyerarşik Kalıtım
Hiyerarşik kalıtımda, birden çok alt sınıf tek bir üst sınıftan uzanır. Örneğin,

4. Çoklu Kalıtım
Çoklu kalıtımda, tek bir alt sınıf, birden çok üst sınıftan uzanır. Örneğin,

Not : Java, çoklu kalıtımı desteklemez. Bununla birlikte, arayüzleri kullanarak çoklu miras elde edebiliriz. Daha fazla bilgi edinmek için Java çoklu miras uygular sayfasını ziyaret edin.
5. Hibrit Kalıtım
Karma kalıtım, iki veya daha fazla kalıtım türünün birleşimidir. Örneğin,

Burada, hibrit bir kalıtım oluşturmak için hiyerarşik ve çoklu kalıtımı birleştirdik.