Java Kalıtımı (Örneklerle)

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 .

extendsAnahtar 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.

Java Kalıtım Uygulaması

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 : @OverrideEk 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, superanahtar 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 superanahtar kelime, eat()süper sınıfta bulunan yöntemi çağırmak için kullanılır .

superAlt 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 protectedalanlar 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,

Java Tek Kalıtım

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,

Java Çok Düzeyli Devralma

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,

Java Hiyerarşik Kalıtımı

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,

Java Çoklu Kalıtımı

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,

Java Hibrit Kalıtımı

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

Ilginç makaleler...