Java'da Kalıtım bir nesnenin bir ana nesnenin tüm özelliklerini ve davranışlarını edindiği bir mekanizmadır. Bu önemli bir parçası OOP'lar (Nesneye Yönelik programlama sistemi).
Java'da kalıtımın ardındaki fikir, yeni şeyler oluşturabilmenizdir. sınıflar mevcut sınıfların üzerine inşa edilmiştir. Mevcut bir sınıftan miras aldığınızda üst sınıfın yöntemlerini ve alanlarını yeniden kullanabilirsiniz. Üstelik mevcut sınıfınıza yeni yöntemler ve alanlar da ekleyebilirsiniz.
Miras temsil eder IS-A ilişkisi olarak da bilinen ebeveyn-çocuk ilişki.
Neden Java'da miras kullanılmalı?
- İçin Yöntemi Geçersiz Kılma (Bu yüzden çalışma zamanı polimorfizmi ulaşılabilir).
- Kodun Yeniden Kullanılabilirliği için.
Mirasta Kullanılan Terimler
Java Mirasının sözdizimi
class Subclass-name extends Superclass-name { //methods and fields }
anahtar kelimeyi genişletir Mevcut bir sınıftan türetilen yeni bir sınıf oluşturduğunuzu belirtir. 'Uzatmak'ın anlamı işlevselliği arttırmaktır.
reaksiyon js öğreticisi
Java terminolojisinde miras alınan sınıfa ebeveyn veya üst sınıf, yeni sınıfa ise çocuk veya alt sınıf adı verilir.
Java Miras Örneği
Yukarıdaki şekilde gösterildiği gibi Programcı alt sınıf, Çalışan ise üst sınıftır. İki sınıf arasındaki ilişki Programcı IS-A Çalışanı . Bu, Programcının bir tür Çalışan olduğu anlamına gelir.
e-bankacılığın sınırlamaları
class Employee{ float salary=40000; } class Programmer extends Employee{ int bonus=10000; public static void main(String args[]){ Programmer p=new Programmer(); System.out.println('Programmer salary is:'+p.salary); System.out.println('Bonus of Programmer is:'+p.bonus); } }Şimdi Test Edin
Programmer salary is:40000.0 Bonus of programmer is:10000
Yukarıdaki örnekte, Programcı nesnesi hem kendi sınıfının hem de Çalışan sınıfının alanına, yani kodun yeniden kullanılabilirliğine erişebilir.
Java'da miras türleri
Java'da sınıf temelinde üç tür kalıtım olabilir: tek, çok düzeyli ve hiyerarşik.
Java programlamada çoklu ve hibrit kalıtım yalnızca arayüz aracılığıyla desteklenir. Arayüzler konusunu daha sonra öğreneceğiz.
Not: Java'da sınıf aracılığıyla çoklu kalıtım desteklenmez.
Bir sınıfın birden fazla sınıfı miras almasına çoklu kalıtım denir. Örneğin:
Tek Kalıtım Örneği
Bir sınıf başka bir sınıfı miras aldığında buna denir. tek miras . Aşağıda verilen örnekte Dog sınıfı Animal sınıfını miras aldığı için tek miras söz konusudur.
Dosya: TestInheritance.java
class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class TestInheritance{ public static void main(String args[]){ Dog d=new Dog(); d.bark(); d.eat(); }}
Çıktı:
barking... eating...
Çok Düzeyli Kalıtım Örneği
Miras zinciri olduğunda buna denir. çok düzeyli miras . Aşağıda verilen örnekte görebileceğiniz gibi BabyDog sınıfı Dog sınıfını miras alır, o da yine Animal sınıfını miras alır, yani çok düzeyli bir kalıtım söz konusudur.
Dosya: TestInheritance2.java
dize karşılaştırması için c programı
class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class BabyDog extends Dog{ void weep(){System.out.println('weeping...');} } class TestInheritance2{ public static void main(String args[]){ BabyDog d=new BabyDog(); d.weep(); d.bark(); d.eat(); }}
Çıktı:
weeping... barking... eating...
Hiyerarşik Kalıtım Örneği
İki veya daha fazla sınıfın tek bir sınıfı miras almasına denir. hiyerarşik miras . Aşağıda verilen örnekte Dog ve Cat sınıfları Animal sınıfını miras alır, dolayısıyla hiyerarşik bir miras söz konusudur.
Dosya: TestInheritance3.java
class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class Cat extends Animal{ void meow(){System.out.println('meowing...');} } class TestInheritance3{ public static void main(String args[]){ Cat c=new Cat(); c.meow(); c.eat(); //c.bark();//C.T.Error }}
Çıktı:
java dersleri
meowing... eating...
S) Java'da neden çoklu kalıtım desteklenmiyor?
Karmaşıklığı azaltmak ve dili basitleştirmek için Java'da çoklu kalıtım desteklenmez.
A, B ve C'nin üç sınıf olduğu bir senaryoyu düşünün. C sınıfı A ve B sınıflarını miras alır. A ve B sınıfları aynı yönteme sahipse ve onu alt sınıf nesnesinden çağırıyorsanız, A veya B sınıfının yöntemini çağırma konusunda belirsizlik olacaktır.
Derleme zamanı hataları çalışma zamanı hatalarından daha iyi olduğundan, 2 sınıfı devralırsanız Java derleme zamanı hatası oluşturur. Yani aynı yönteminiz olsun veya olmasın, derleme zamanı hatası olacaktır.
class A{ void msg(){System.out.println('Hello');} } class B{ void msg(){System.out.println('Welcome');} } class C extends A,B{//suppose if it were public static void main(String args[]){ C obj=new C(); obj.msg();//Now which msg() method would be invoked? } }Şimdi Test Edin
Compile Time Error