what is inheritance java tutorial with examples
Bu eğitici, Java'da Kalıtım kavramını, 'genişletilmiş' ve 'süper' anahtar kelimeler, alt sınıf, üst sınıf, Is-A, HAS-A ilişkileri gibi ilgili terimleri açıklamaktadır:
OOP'nin üç Sütunu olan Java'da Soyutlama, Kapsülleme ve Polimorfizm'i öğrendikten sonra, OOP'nin son sütununa, yani kalıtıma geliyoruz.
Bu öğreticiden başlayarak, sonraki birkaç öğreticide Java'da kalıtımı tartışacağız.
=> Kolay Java Eğitim Serisini Okuyun.
Ne öğreneceksin:
Java'da Kalıtım
Java'da kalıtım, bir sınıfın bir nesnesinin başka bir nesnenin davranışını ve özelliklerini kazandığı bir teknik veya süreç olarak tanımlanabilir. Bu, sınıfı miras alarak veya iki sınıf arasında bir ilişki kurarak yapılır.
Örneğin, Kurbağa bir amfibidir. Amfibi sınıfının diğer hayvanları gibi, Kurbağa da diğer hayvanlar için ortak olan birçok özelliğe sahip olabilir. Yani burada bir Amfibi bir türdür ve kurbağa gibi hayvanlar onun üyeleridir.
Amfibi türlerini ve üyelerini OOP kullanarak bir yazılım sunumunda temsil etmemiz gerekirse, o zaman yapacağımız şey, genel olarak amfibiler için ortak olan özellikleri veya davranışları içeren bir 'Amfibi' sınıfı geliştirmektir.
Bu şekilde, tanımladığımız her amfibi hayvan için ortak özellikleri ve davranışları kopyalamak zorunda kalmayız. Her biri amfibi hayvanlar için doğrudan bir sınıf oluşturacağız ve aşağıda gösterildiği gibi Amfibi sınıfından miras alacağız.
Dolayısıyla 'Miras' özelliğinin arkasındaki genel fikir, zaten var olan sınıflardan miras alarak yeni sınıflar oluşturabilmemizdir. Zaten var olan sınıflardan miras alarak, bu sınıfların özelliklerini ve davranışını kullanırız. Ayrıca, yeni sınıfımıza daha fazla özellik ve / veya davranış ekleyebiliriz.
Devralma özelliği, bir ' ebeveyn-çocuk ”Java'da bağlantı veya ilişki. Yeni sınıfın miras alındığı sınıfa ' Ebeveyn sınıfı 'Yeni sınıf ise' Çocuk sınıfı ”.
Kalıtım esas olarak şu durumlarda kullanılır:
- İçin yöntemi geçersiz kılma böylece başarabiliriz çalışma zamanı polimorfizmi .
- İçin kodu yeniden kullan . Halihazırda mevcut sınıflardan miras alarak, tekrar Kullanılabilirlik kod.
Kalıtımda Kullanılan Ortak Terminoloji
- Tekrar Kullanılabilirlik: Yeni sınıfların alanları veya özellikleri ve mevcut bir sınıfın yöntemlerini yeniden kullandığı mekanizma.
- Sınıf: Sınıf, ortak özelliklere sahip nesnelerin bir koleksiyonudur. Bir sınıf, nesneler için şablon veya mavi baskı olarak görüntülenebilir.
- Alt Sınıf / Çocuk Sınıfı: Başka bir sınıftan miras alan bir sınıf, bir alt sınıf veya bir alt sınıf veya türetilmiş bir sınıftır.
- Süper Sınıf / Ebeveyn Sınıfı: Özellikleri ve yöntemleri elde etmek için başka bir sınıf tarafından miras alınan bir sınıfa Ana sınıf veya üst sınıf veya temel sınıf denir.
Aşağıdaki miras hiyerarşisi, bir üst sınıf ve alt sınıfı gösteren bir örnektir.
OrganisationName ve EmployeeId alanlarına sahip bir Employee sınıfımız var. Çalışan adı, departman ve diğer çalışan ayrıntıları gibi başka alanlar da olabilir.
Ardından, alanın maaşı ve avantajları ile 'SoftwareDeveloper' adlı başka bir sınıf türetiyoruz. SoftwareDeveloper sınıfı, Employee sınıfından miras alır ve dolayısıyla Employee sınıfının özelliklerini de edinir.
Yukarıdaki diyagramda gösterildiği gibi, burada Çalışan sınıfı bir Süper veya Temel sınıfıdır ve SoftwareDeveloper bir alt sınıf veya türetilmiş sınıftır.
Java'da Anahtar Kelimeyi 'genişletir'
Java'da, sınıfı devralmak için 'genişler' anahtar kelimesi kullanılır.
Java kalıtımının genel sözdizimi aşağıda verilmiştir:
class SubClass extends SuperClass { //subclass methods and fields }
Yukarıda gösterildiği gibi, 'extends' anahtar sözcüğü, sınıf bildirimi söz diziminde sınıf adından sonra görünür.
'Extends' anahtar kelimesi, 'SuperClass' dan özellikleri ve davranışı devralacak yeni bir 'Alt Sınıf' sınıfı oluşturduğumuzu ifade eder. Başka bir deyişle, extends anahtar sözcüğü, SuperClass'ın mevcut işlevselliği üzerine yeni bir sınıf SubClass oluşturduğumuzu gösterir.
'Extends' anahtar kelimesi ile uygulanan miras, sınıf mirasıdır. Bir sonraki eğiticide, arayüzleri devralabileceğimiz başka bir anahtar kelime 'uygulamaları' tartışacağız.
Yukarıda açıkladığımız Employee-SoftwareDeveloper sınıfının bir örneği şu şekilde temsil edilebilir:
class Employee{ String OrganizationName; int EmployeeId; } class SoftwareDeveloper extends Employee{ float Salary; float Perks; }
IS-A ve HAS-A İlişkisi
Aşağıdaki sınıf yapısını düşünün:
class Mammal{ } class Cow extends Mammal{ }
Peki yukarıdaki yapıyı nasıl yorumlayabiliriz? İnek sınıfı Memeli'yi genişlettikçe veya miras aldıkça, 'İnek IS A Memeli 'veya' İnek Bir çeşit Memeli'. Bu nedenle, bu tür ilişkileri ifade ettiğimizde, bu belirli ilişki 'IS_A' ilişkisidir.
Yukarıdaki yapıda, bir türün başka türden olduğu gerçeğini ifade etmek için kalıtım hiyerarşisini kullandık. Dolayısıyla, yukarıdaki yapıda İnek ve Memeli arasındaki ilişkiyi belirtmek için bir miras kullandık.
Benzer şekilde, daha fazla IS-A ilişkisini şu şekilde ifade edebiliriz:
Yukarıda, Java'da kalıtım kullanarak ifade edebileceğimiz yaygın ilişki örneklerinden bazıları verilmiştir.
Genel olarak, IS-A türü ilişkiler kalıtım kullanılarak ifade edilebilir.
Şimdi aşağıdaki örneğe bakalım:
Yukarıdaki diyagramda, bir Aracın iki parçaya sahip olduğunu görüyoruz, yani Motor ve Fren. Peki bu senaryoyu nasıl kelimelere dökebiliriz?
'Araç içerir bir Motor ve bir Araç içerir bir fren ”.
Yani burada ifade ettiğimiz şey 'IS-A' ilişkisi değil, bir nesneyi başka bir nesnenin parçası olarak belirlediğimiz bir sınırlama ilişkisidir.
test planı örneği nasıl yazılır
Yukarıdaki örnekte, bir motor bir bir bölümü araç. Bu bir ' türü ”Araç. Bu ' HAS-A 'Veya Java'da kapsama veya kompozisyon ilişkisi. Java'daki Has-a ilişkisi, sınıfın bir üyesi olarak bir nesne eklenerek ifade edilir.
Yani yukarıdaki aynı araç örneğini takip edersek, aşağıdaki gibi ifade edebiliriz:
class Engine{ } class Brake { } class Vehicle{ Engine e; Brake b; }
Yani bir Taşıtın motoru ve freni vardır. İlişkiyi yukarıdaki şekilde ifade ederek, Motorun veya frenin dahili uygulamasıyla ilgilenmiyoruz. Araç sınıfı, Motor ve Fren sınıflarına neyin gerekli olduğunu bildirecek ve bu sınıflar bunu sağlayacaktır.
IS-A ilişkisi gibi, HAS-A ilişkisi de kodun yeniden kullanılmasında yararlıdır.
Bu eğitimde, kalıtımı (IS-A) ayrıntılı olarak tartışacağız ve bir sonraki derste, Kapsama veya Kompozisyon (HAS-A) tartışacağız.
Java Kalıtım Örneği
Kalıtımı göstermek için Java'da basit bir örnek uygulayalım.
//example class demonstrating Inheritance in Java class BaseClass { public void display() { System.out.println('BaseClass::Display'); } } //create a new class from BaseClass class DerivedClass extends BaseClass { public void print() { System.out.println('DerivedClass::print'); } } class Main { public static void main(String() args) { //create an object of DerivedClass DerivedClass d1 = new DerivedClass(); d1.display(); //call BaseClass method d1.print(); //call DerivedClass method } }
Çıktı:
Yukarıdaki program basit bir kalıtım örneğini göstermektedir. Bir metoda sahip bir BaseClass bildirildi. Ardından BaseClass'ı genişleten başka bir DerivedClass sınıfı bildirilir. Bu sınıfın ayrıca bir yöntemi vardır.
Programın ana yönteminde bir DerivedClass nesnesi oluşturuyoruz ve bu nesneyi kullanarak BaseClass ve DerivedClass yöntemini çağırıyoruz.
en iyi pc ayarlama yazılımı ücretsiz
Çıktı, her iki yöntemle yazdırılan mesajları gösterir. DerivedClass, BaseClass'ı genişlettiğinden ve BaseClass yöntemi geneldir, DerivedClass tarafından görülebilir.
Java'da 'süper' Anahtar Kelime
Kalıtımda, üst sınıflar veya ebeveyn sınıfları ve alt sınıflarla ilgileniyoruz. Değişkenler, yöntemler veya kurucular dahil olmak üzere üst sınıf üyelerine ara olarak erişmemiz gerekiyorsa, o zaman bazı mekanizmalara ihtiyacımız var. Bu temel sınıf üyelerine erişim mekanizması Java'da 'süper' anahtar sözcük kullanılarak sağlanır.
Peki, Java'da 'süper' anahtar kelimesini hangi senaryolarda kullanıyoruz?
Aşağıda, 'süper' bir anahtar kelimenin yardımcı olabileceği senaryolar listelenmiştir.
- Süper / temel sınıf ve alt / türetilmiş sınıf, üyeler için aynı adlara sahipse ve süper sınıf üyelerine erişmek istediğimizde, süper anahtar kelimesini kullanırız.
- Alt sınıftan üst sınıf yapıcısına erişmek istediğimizde, süper sınıf anahtar sözcüğünü çağırmak için süper anahtar sözcüğünü kullanırız.
Yukarıdaki şekilde bir kalıtım yapısı gösterdik. Tabanda ve türetilmiş sınıfta, myStr String değişkenimiz var. TüretilmişSınıfta, bir printStr () fonksiyonumuz var. Bu yöntemde, temel sınıftan myStr değişkenine erişmek için 'süper' anahtar kelimesini kullandık.
Şekilde, temel sınıf üye değişkenine ve türetilmiş sınıf değişkenine işaret eden okları gösterdik.
Şimdi, çeşitli üst sınıf üyelerine erişmek için süper anahtar sözcüğünü kullanmanın programlama örneklerini görelim.
# 1) Üst Sınıf Üye Değişkenine Erişim
Aşağıdaki Java programı, temel sınıftaki değişkenlere erişmek için 'süper' anahtar kelimesinin kullanımını göstermektedir.
class Baseclass { String myStr; } class Subclass extends Baseclass { String myStr; public void printdetails() //Baseclass and Subclass have variables with same name { super.myStr = 'Super'; //refers to parent class member myStr = 'Sub'; System.out.println('Superclass myStr :' + super.myStr+' and Subclass myStr:'+myStr); } } class Main{ public static void main(String() args) { Subclass cobj = new Subclass(); cobj. printdetails (); } }
Çıktı:
Yukarıdaki program, üye değişkenler hem temel hem de türetilmiş sınıfta aynı adla bildirildiğinde türetilmiş sınıftan temel sınıfın üye değişkenlerine nasıl erişileceğini gösterir.
Burada, türetilmiş sınıfın yanı sıra tabanda bildirilen myStr değişkenimiz var. Printdetails yönteminde, türetilmiş sınıf değişkeni myStr'ye herhangi bir niteleyici olmadan doğrudan erişilirken, 'super.myStr' kullanarak temel sınıfın myStr değişkenine başvururuz.
# 2) Süper Sınıf Yöntemine Erişim
Daha sonra, temel sınıftaki yöntem ve türetilmiş sınıftaki yöntem aynı adlara sahip olduğunda temel sınıf yönteminin nasıl çağrılacağını göreceğiz.
Aşağıdaki program bunu göstermektedir.
class Parent { String myStr; public void print() //parent class method { myStr = 'Parent class myStr'; System.out.println(myStr); } } class Child extends Parent { String myStr; public void print() //child class method with same name as parent { super.print(); //call Parent class print() method myStr = 'Child class myStr'; System.out.println(myStr); } } class Main{ public static void main(String() args) { Child c_obj = new Child(); c_obj.print (); } }
Çıktı:
# 3) Superclass Constructor'a Erişim
Bir sınıfı diğerinden miras aldığımızda, kurucuların miras alınmadığını unutmayın.
Türetilmiş sınıf yapıcısını çalıştırmadan önce üst sınıf kurucularından herhangi bir talimat yürütmek istersek, o zaman süper sınıf kurucusunu 'süper' anahtar kelimesini kullanarak da çağırabiliriz.
Üst sınıf kurucusunu çağırmak için yöntem çağrısını kullanıyoruz.
süper (parametre listesi…)
Aşağıdaki yöntem, Java'daki süper yapıcılara erişimi gösterir.
class Parent { String myStr; public Parent(String name) //base class constructor { myStr = name; } } class Child extends Parent { String myStr; public Child(String name1, String name2) { super(name1); //call base class constructor and pass argument value this.myStr = name2; } public void printDetails() //print details of both constructors { System.out.println('From base class constructor: ' +super.myStr); System.out.println('From derived class constructor: ' + myStr); } } class Main{ public static void main(String() args) { Child cobj = new Child('Super constructor string','Child constructor string'); cobj.printDetails(); } }
Çıktı:
Yukarıdaki programdan da görebileceğimiz gibi, türetilmiş sınıf yapıcısından üst sınıfın yapıcısını çağırdık. Kural olarak, süper sınıf yapıcısına erişmek istediğimizde, türetilmiş sınıfın yapıcısındaki ilk ifade olması gerektiğini unutmayın.
Temel sınıf parametreleştirilmiş bir kurucuya sahip olduğundan, yapıcıyı çağırırken uygun parametreyi de süper çağrıya iletiriz.
Yukarıdaki gibi süper yapıcıya açık bir çağrı yapılmadıysa, derleyici her zaman otomatik olarak super () öğesine örtük bir çağrı ekler. Ancak bunun, süper sınıfın varsayılan kurucusuna bir çağrı olacağını unutmayın.
Sıkça Sorulan Sorular
S # 1) Java'da Kalıtım nedir?
Cevap: Bir sınıfın başka bir sınıfın özelliklerini ve davranışını elde ettiği sürece kalıtım denir. Java'da bir sınıf, 'extends' anahtar sözcüğü kullanılarak başka bir sınıf tarafından miras alınır.
Kalıtım, kalıtım yoluyla, miras alınan bir sınıfın halihazırda var olan özelliklerini ve davranışını, yinelenen kod yazmak zorunda kalmadan elde edip kullanabileceğimiz için, kodun yeniden kullanılabilirliğini destekler.
S # 2) Miras neden Java'da kullanılıyor?
Cevap: Kalıtım, esas olarak uygulamanın yeniden kullanılabilirliğini iyileştirmek için kullanılır. Kalıtımı kullanarak uygulamamızda hazır sınıfları kullanabiliriz. İşlevselliğe sahipsek, kodumuzu yazmak zorunda değiliz.
Kalıtımın ikinci kullanımı, yöntemi geçersiz kılmaktır. Çalışma zamanı polimorfizmini uygulamak için kalıtımdan yararlanıyoruz.
S # 3) Kalıtımın Avantajları Nelerdir?
Cevap: Yeniden kullanılabilirlik, kalıtımın en önemli avantajıdır. Kodun miras yoluyla paylaşılması, daha iyi okunabilirlik ve kodun daha iyi düzenlenmesi ile sonuçlanır.
Ayrıca, kalıtımı kullanarak yöntemi geçersiz kılarak çalışma zamanı polimorfizmine ulaşabiliriz.
S # 4) Mirasın özellikleri nelerdir?
Cevap: Eski nesilden edinilen herhangi bir özellik veya özellik miras yoluyla yapılır. Örneğin, birçok ailede ortaya çıkan ışık göz özelliği kalıtımın bir örneğidir.
Bir programlama bakış açısından, kalıtım, yeniden kullanılabilirlik ve yöntemi geçersiz kılma özelliği sağlar.
S # 5) Süper () gerekli mi?
Cevap: Hayır. Çünkü super () 'i çağırmazsak, derleyici bunu bizim için dolaylı olarak yapar. Ancak super () işlevinin örtük çağrısı, varsayılan temel sınıf yapıcısıdır. Dolayısıyla, bir temel sınıftan parametreli bir kurucuya ihtiyacımız varsa, onu açıkça çağırmalıyız.
Sonuç
Bu eğitimde Java'da Kalıtım kavramını tanıttık. Kalıtım, başka bir sınıftaki bir sınıfın özelliklerini ve davranışını elde etme sürecidir. Kalıtımda kullandığımız temel tanım ve terminolojiyi burada tartıştık.
Java'daki Is-A ve Has-A ilişkilerini de tartıştık. Miras, bir Is-A ilişkisini uygulamak için kullanılır.
Daha sonra Java'da mirasla bağlantılı olarak kullanılan 'genişletilmiş' ve 'süper' anahtar kelimeleri tartıştık. Extends, kalıtımı uygulamak için kullanılır. Super anahtar sözcüğü türetilmiş sınıftan temel sınıf yapıcısına, yönteme veya değişkene atıfta bulunmak için kullanılır.
=> Mükemmel Java Eğitim Kılavuzuna Buradan Bakabilirsiniz.
Önerilen Kaynaklar
- Örneklerle Java Tarayıcı Sınıfı Eğitimi
- Java Vektör Nedir | Örneklerle Java Vektör Sınıfı Eğitimi
- Java Enum: Örneklerle Java Numaralandırma Eğitimi
- Java String length () Yöntem Örneklerle
- Programlama Örnekleriyle Java Float Eğitimi
- C ++ 'da Kalıtım
- C ++ 'da Kalıtım Türleri
- Python OOPs Kavramları (Python Sınıfları, Nesneler ve Kalıtım)