logo

Java'da Kalıtım Türleri

Miras nesne yönelimli programlamanın en güçlü özelliğidir. Bir sınıfın özelliklerini başka bir sınıfa aktarmamızı sağlar. Bu bölümde tartışacağız Java'da miras türleri gerçek hayattan örneklerle derinlemesine anlatılıyor. Ayrıca farklı kalıtım türleri kavramını uygulamak için Java programları oluşturacağız.

Miras

Miras mevcut bir sınıftan yeni bir sınıf oluşturma mekanizmasıdır. Mevcut (eski) sınıf şu şekilde bilinir: temel sınıf veya süper sınıf veya ebeveyn sınıfı . Yeni sınıf şu şekilde bilinir: Türetilmiş sınıf veya alt sınıf veya çocuk sınıfı . Bir sınıfın (ebeveyn) özelliklerini ve davranışlarını başka bir sınıfta (çocuk) kullanmamızı sağlar.

Özellikleri miras alınan bir sınıfa denir. ebeveyn sınıfı ve ana sınıfın özelliklerini miras alan bir sınıfa denir. çocuk sınıfı . Böylece ebeveyn ve çocuk sınıfı arasında ebeveyn-çocuk veya ebeveyn-çocuk olarak bilinen bir ilişki kurulur. bir ilişki.

Diyelim ki adında iki sınıf var. Baba Ve Çocuk ve Child sınıfında Father sınıfının özelliklerini miras almak istiyoruz. kullanarak bunu başarabiliriz. uzanır anahtar kelime.

 //inherits the properties of the Father class class Child extends Father { //functionality } 

Java'da Kalıtım Türleri

Mirası ne zaman kullanmalıyız?

Miras şunları sağlar: tekrar Kullanılabilirlik özellikle yeniden kullanılacak büyük miktarda kod olduğunda. Aynı zamanda farklı sınıflar arasındaki ilişkiyi de kurar. bir ilişki. Eğer başarmak istiyorsak bunu da kullanabiliriz. yöntem geçersiz kılma .

Hatırlanacak noktalar

  • Yapıcı Java'da miras alınamaz.
  • Özel üyeler Java'da miras alınmaz.
  • Java'da döngüsel mirasa izin verilmez.
  • Alt nesnelere üst referansı atayın.
  • Yapıcılar, yapıcıda bulunan super() nedeniyle yürütülür.

Miras Türleri

Java aşağıdaki dört kalıtım türünü destekler:

  • Tek Miras
  • Çok Düzeyli Kalıtım
  • Hiyerarşik Miras
  • Hibrit Miras
Java'da Kalıtım Türleri

Not: Java'da çoklu kalıtım desteklenmez.

Her birini uygun örneklerle tartışalım.

Tek Miras

Tekli kalıtımda, bir alt sınıf yalnızca bir süper sınıftan türetilir. Tek ebeveynli bir sınıfın özelliklerini ve davranışını miras alır. Bazen şu şekilde de bilinir: basit miras .

Java'da Kalıtım Türleri

Yukarıdaki şekilde, Employee bir ebeveyn sınıfıdır ve Executive bir alt sınıftır. Executive sınıfı, Employee sınıfının tüm özelliklerini miras alır.

Tekli kalıtım mekanizmasını bir Java programında uygulayalım.

Yönetici.java

 class Employee { float salary=34534*12; } public class Executive extends Employee { float bonus=3000*6; public static void main(String args[]) { Executive obj=new Executive(); System.out.println('Total salary credited: '+obj.salary); System.out.println('Bonus of six months: '+obj.bonus); } } 

Çıktı:

 Total salary credited: 414408.0 Bonus of six months: 18000.0 

Çok Düzeyli Kalıtım

İçinde çok seviyeli miras Bir sınıfın bir sınıftan türetilmesi ve aynı zamanda başka bir sınıftan da türetilmesi durumuna çok düzeyli kalıtım adı verilir. Basit bir ifadeyle, birden fazla ebeveyn sınıfına sahip olan bir sınıfa çok düzeyli kalıtım denildiğini söyleyebiliriz. Sınıfların farklı seviyelerde olması gerektiğini unutmayın. Dolayısıyla tek bir temel sınıf ve tek bir türetilmiş sınıf vardır, ancak birden fazla ara temel sınıf vardır.

Java'da Kalıtım Türleri

Yukarıdaki şekilde, Marks sınıfı, Students sınıfının üyelerini veya yöntemlerini miras alır. Sports sınıfı, Marks sınıfının üyelerini devralır. Bu nedenle, Öğrenci sınıfı Marks sınıfının ebeveyn sınıfıdır ve Marks sınıfı Sports sınıfının ebeveyn sınıfıdır. Dolayısıyla Sports sınıfı, Marks sınıfıyla birlikte Öğrencinin özelliklerini de örtük olarak devralır.

Çok seviyeli kalıtım mekanizmasını bir Java programında uygulayalım.

Çok Düzeyli KalıtımÖrneği.java

rihanna'nın yaşı
 //super class class Student { int reg_no; void getNo(int no) { reg_no=no; } void putNo() { System.out.println('registration number= '+reg_no); } } //intermediate sub class class Marks extends Student { float marks; void getMarks(float m) { marks=m; } void putMarks() { System.out.println('marks= '+marks); } } //derived class class Sports extends Marks { float score; void getScore(float scr) { score=scr; } void putScore() { System.out.println('score= '+score); } } public class MultilevelInheritanceExample { public static void main(String args[]) { Sports ob=new Sports(); ob.getNo(0987); ob.putNo(); ob.getMarks(78); ob.putMarks(); ob.getScore(68.7); ob.putScore(); } } 

Çıktı:

 registration number= 0987 marks= 78.0 score= 68.7 

Hiyerarşik Miras

Tek bir temel sınıftan birden fazla sınıf türetilmişse buna denir. hiyerarşik miras .

Java'da Kalıtım Türleri

Yukarıdaki şekilde Bilim, Ticaret ve Sanat sınıfları Öğrenci adında tek ebeveynli bir sınıfı devralır.

Hiyerarşik miras mekanizmasını bir Java programında uygulayalım.

Hiyerarşik KalıtımÖrneği.java

 //parent class class Student { public void methodStudent() { System.out.println('The method of the class Student invoked.'); } } class Science extends Student { public void methodScience() { System.out.println('The method of the class Science invoked.'); } } class Commerce extends Student { public void methodCommerce() { System.out.println('The method of the class Commerce invoked.'); } } class Arts extends Student { public void methodArts() { System.out.println('The method of the class Arts invoked.'); } } public class HierarchicalInheritanceExample { public static void main(String args[]) { Science sci = new Science(); Commerce comm = new Commerce(); Arts art = new Arts(); //all the sub classes can access the method of super class sci.methodStudent(); comm.methodStudent(); art.methodStudent(); } } 

Çıktı:

 The method of the class Student invoked. The method of the class Student invoked. The method of the class Student invoked. 

Hibrit Miras

Hibrit araçlar birden fazla araçtan oluşur. Hibrit kalıtım, iki veya daha fazla kalıtım türünün birleşimidir.

Java'da Kalıtım Türleri

Yukarıdaki şekilde Büyükbaba bir süper sınıftır. Baba sınıfı, GrandFather sınıfının özelliklerini miras alır. Baba ve Büyükbaba tek mirası temsil ettiğinden. Ayrıca Baba sınıfı, Oğul ve Kız sınıfı tarafından miras alınır. Böylece Baba, Oğul ve Kız için ebeveyn sınıfı haline gelir. Bu sınıflar hiyerarşik mirası temsil eder. Kombine olarak hibrit mirası ifade eder.

Hibrit miras mekanizmasını bir Java programında uygulayalım.

kızı.java

 //parent class class GrandFather { public void show() { System.out.println('I am grandfather.'); } } //inherits GrandFather properties class Father extends GrandFather { public void show() { System.out.println('I am father.'); } } //inherits Father properties class Son extends Father { public void show() { System.out.println('I am son.'); } } //inherits Father properties public class Daughter extends Father { public void show() { System.out.println('I am a daughter.'); } public static void main(String args[]) { Daughter obj = new Daughter(); obj.show(); } } 

Çıktı:

 I am daughter. 

Çoklu Kalıtım (desteklenmiyor)

Java, belirsizlik nedeniyle birden fazla mirası desteklemez. Örnek olarak aşağıdaki Java programını düşünün.

Demo.java

 class Wishes { void message() { System.out.println('Best of Luck!!'); } } class Birthday { void message() { System.out.println('Happy Birthday!!'); } } public class Demo extends Wishes, Birthday //considering a scenario { public static void main(String args[]) { Demo obj=new Demo(); //can't decide which classes' message() method will be invoked obj.message(); } } 

Yukarıdaki kod hata veriyor çünkü derleyici hangi message() yönteminin çağrılacağına karar veremiyor. Bu nedenle Java, sınıf düzeyinde çoklu kalıtımı desteklemez ancak bir arayüz .