java override method overriding
Bu eğitici, basit örneklerle Yöntem Geçersiz Kılma ve @override açıklamasını kullanarak Java'da Çalışma Zamanı Polimorfizminin nasıl elde edileceğini açıklar:
Polimorfizm kavramını ve Derleme zamanı polimorfizmini ayrıntılı olarak tartıştık. Bu eğitimde, Java'da Runtime polimorfizmi ile devam edeceğiz.
Yöntem çağrısının derleme zamanında çözüldüğü derleme zamanı polimorfizminin aksine, çalışma zamanı çok biçimliliğinde, yöntem çağrısı çalışma zamanında çözümlenir.
=> TÜM Java Öğreticilerini Buradan Kontrol Edin.
Ne öğreneceksin:
- Java'da Çalışma Zamanı Polimorfizmi
- Java'da Ek Açıklamayı @override
- Java'da Aşırı Yükleme ve Geçersiz Kılma
- Sonuç
Java'da Çalışma Zamanı Polimorfizmi
Bir çalışma zamanı polimorfizmi olarak da bilinir dinamik çok biçimlilik veya Dinamik Yöntem Gönderimi bir geçersiz kılınan bir yöntem çağrısının çalışma zamanında dinamik olarak çözümlendiği teknik.
Java'da çalışma zamanı polimorfizmi ' yöntemi geçersiz kılma ”. Yöntemi geçersiz kılma, ana sınıftaki bir yöntemin alt sınıfta yeniden tanımlandığı veya geçersiz kılındığı bir tekniktir.
Yöntem bir sınıfta geçersiz kılındığında, dinamik yöntem gönderme tekniği, derleme zamanında değil çalışma zamanında geçersiz kılınan yöntem çağrısını çözer.
Java'da Çalışma Zamanı Polimorfizmine Ulaşın - Yöntemi Geçersiz Kılma
Yöntem geçersiz kılma, Java'da çalışma zamanı polimorfizmi elde etmek için kullandığımız yaklaşımdır. Daha önce de belirtildiği gibi, yöntemi geçersiz kılma, alt sınıfın kendi üst sınıfında zaten mevcut olan bir yöntemi eklediği ve bu yönteme yeni işlevler eklediği bir tekniktir. Daha sonra temel sınıf yönteminin geçersiz kılındığını söylüyoruz.
Alt sınıfta, ana sınıfın yöntemiyle aynı prototiple tanımladığımız, ancak farklı uygulama ile tanımladığımız yeni yönteme ' geçersiz kılma yöntemi ” . Ana sınıftaki yöntem, ' Geçersiz kılınan yöntem ”.
.torrent nasıl açılır
Yöntem geçersiz kılındığında, bu geçersiz kılınan yönteme yapılan çağrının nasıl çözüldüğü sorusu kalır mı?
Genellikle geçersiz kılınan yöntemi temel sınıfın referansı aracılığıyla çağırırız. Base türünde bir referans oluşturacağız ve ardından new anahtar sözcüğünü kullanarak bir alt sınıf nesnesi atayacağız.
Bu nedenle, hangi yöntemin çağrılacağını belirleyen referans değişkeninin içeriğine veya hangi nesneye temel sınıf referansı tarafından referans verildiğine bağlıdır. Dolayısıyla, referans nesneler alt sınıfın nesnesini işaret ederse, geçersiz kılma yöntemi çağrılır.
Aksi takdirde, referans nesne bir temel sınıf nesnesi içeriyorsa, geçersiz kılınan yöntem çağrılır. Özellikle dinamik yöntem gönderimi için çalışma zamanı polimorfizminde net olmamız gereken bir konu, aşağıda açıklanan 'Upcasting' dir.
Upcasting
Yukarıda tartıştığımız üst sınıfın bir referans nesnesi alt sınıfın nesnesine işaret ettiğinde veya bu nesneye atıfta bulunduğunda, ona Upcasting diyoruz.

Yukarı yayınlamayı basit bir örnekle anlayalım.
Bir 'BaseClass' sınıfımız olduğunu ve bu BaseClass'ı yeni bir DerivedClass sınıfı oluşturmak için genişlettiğimizi düşünün. Bu yapı aşağıda gösterildiği gibi görünüyor.
class BaseClass { ….//BaseClass code here } class DerivedClass extends BaseClass{ ….//DerivedClass code here }Şimdi yukarı tahmini uygulamak için BaseClass türünde bir referans değişkeni tanımlayacağız. Daha sonra, aşağıdaki kod ifadesinde yapıldığı gibi BaseClass sınıfının referansına DerivedClass nesnesini atarız.
BaseClass base = new DerivedClass (); //UpcastingYani burada DerivedClass nesnesini BaseClass'a yayınladığımızı söyleyebiliriz. Çalışma zamanı polimorfizmi söz konusu olduğunda, yukarı döküm kavramı çok önemlidir.
Bu nedenle, genel olarak yukarı çevrim, alt veya alt sınıf nesnelerini bir üst veya üst sınıfın referansına atama işlemidir.
SuperClass reference = new Subclass Object;Aşağıdaki Java programı, yöntemi geçersiz kılmayı ve ayrıca çalışma zamanında geçersiz kılınan yöntem çağrılarını çözmek için yukarı yayının nasıl gerçekleştirildiğini gösterir.
//base/parent class class Parent { void Print() //print method { System.out.println('Parent::Print() method'); } } //child class 1 inheriting from Parent class child1 extends Parent { void Print() //overridden print method { System.out.println('child1::Print() method'); } } //child class 2 inheriting from Parent class child2 extends Parent { void Print() //overridden print method { System.out.println('child2::Print() method'); } } class Main { public static void main(String() args) { Parent parent = new Parent(); parent.Print(); //executes parent Print () method parent = new child1(); //upcasting parent.Print(); //executes child1 Print () method parent = new child2(); //upcasting parent.Print(); //executes child2 Print () method Çıktı:

Yukarıdaki programda, her ikisi de bir 'Ebeveyn' sınıfından türetilen iki sınıfımız var, yani child1 ve child2. Üst sınıf, hem child1 hem de child2 sınıflarında geçersiz kılınan bir 'Yazdır' yöntemine sahiptir. Daha sonra ana yöntemde, Parent sınıfının 'parent' adında bir referans nesnesini oluşturuyoruz.
İlk olarak, ona Parent sınıfının bir nesnesini atarız ve ardından 'Print ()' yöntemini çağırırız. Daha sonra bunu önce child1 nesnesini ve ardından child2 nesnesini Parent referansına atayarak tekrar ederiz.
deneyimli için veritabanı mülakat soruları ve cevapları
Çıktı, üst referansın içeriğine bağlı olarak gösterilir ve uygun Yazdırma yöntemi çağrılır.
Dinamik / Çalışma Zamanı Polimorfizminin Avantajları
- Dinamik polimorfizm ile, programcının yöntemleri geçersiz kılmasına izin verilir.
- Sınıfların, türevlerinin daha sonra geçersiz kılabileceği ve belirli uygulamayı sağlayabileceği genel uygulama ile bir yöntem tanımlamasına izin verir.
- Dinamik yöntem gönderimi ile, derleme zamanında karar verilen aşırı yüklemeden farklı olarak, yöntem çağrısı çalışma zamanında çözümlenir. Bu, programcılar için daha fazla esneklik sağlar.
Çalışma zamanı polimorfizmi, uygun yöntemi çalışma zamanında çağrıya bağladığından ve biz de onu çağırıyoruz dinamik bağlama veya geç bağlama . Öte yandan derleme zamanı polimorfizmi, statik bağlama veya erken bağlama .
Statik ve Dinamik Bağlama
| Statik bağlama | Dinamik bağlama |
|---|---|
| Derleme zamanında çözülen yöntem çağrısı statik bağlamadır. | Çalışma zamanında çözümlenen yöntem çağrısı dinamik bağlamadır. |
| Yöntem aşırı yükleme, statik bağlama örneğidir. | Yöntemi geçersiz kılma, dinamik bağlanmanın bir örneğidir. |
| Statik bağlama için sınıf ve alan türleri kullanılır. | Nesneler, dinamik bağlama için kullanılır. |
| Özel, nihai ve statik varlıklar statik bağlama kullanır. | Sanal yöntemler dinamik bağlamayı kullanır. |
Java'da Sanal İşlev / Yöntem
Java'daki sanal işlev veya yöntem, Runtime polimorfizmiyle birlikte kullanılan bir özelliktir. C ++ 'dan farklı olarak, Java'nın özel bir 'sanal' anahtar kelimesi yok bir yöntemin sanal olduğunu belirtmek için. Temel sınıfta tanımlanan ve türetilmiş sınıfta geçersiz kılınan bir yöntem sanaldır.
Java'da, varsayılan olarak, özel ve final dışındaki her statik olmayan yöntem sanal bir işlevdir. Bu nedenle, çalışma zamanı polimorfizmini uygulamak için yukarıda tartıştığımız yöntemlerin de sanal yöntemler olduğuna dikkat edin.
Statik yöntem Sınıfa bağlı olduğundan ve bir nesne kullanılarak çağrılamadığından, çalışma zamanı polimorfizmi ile kullanılamaz ve aynı zamanda sanal bir işlev de değildir.
Java'daki arayüzler varsayılan olarak sanaldır. Arabirimleri uygulayan sınıflar, arabirim yöntemleri için uygulamalar sağlar. Çalışma zamanı polimorfizminde olduğu gibi, arayüz yöntemlerine çağrı da çalışma zamanında çözülür.
Bir arabirimdeki yöntemler geçersiz kılınacak şekilde tasarlandığından, tüm arabirim yöntemlerinin sanal işlevler olduğunu unutmayın.
Örneğin aşağıdaki kodu göz önünde bulundurun:
interface car{ void accelerate(); } class Maruti implements car{ void accelerate () { System.out.println(“Maruti car accelerated!!”); } }Yukarıdaki kodda, hızlandırma () yöntemi, arayüz arabasının bir parçası olduğu ve geçersiz kılınacak şekilde tasarlandığı için sanal bir işlevdir.
Java'da Ek Açıklamayı @override
@Override notasyonu, Java'daki varsayılan açıklamadır. Bu açıklama Java 1.5'te tanıtıldı. @Override notasyonu, alt sınıf yöntemi üst sınıf yöntemini geçersiz kıldığında kullanılır.
Yöntemin üst sınıf yöntemini geçersiz kıldığını belirtmek için Java @override açıklamasını kullanarak, ek açıklamalı yöntem geçersiz kılınmamışsa bir derleyici bir uyarı verir. Dolayısıyla, @override ek açıklaması kullanıldığında yöntemin geçersiz kılınmasını zorunlu kılar.
İkinci olarak, @override açıklamasını kullanarak kodu daha okunaklı hale getiriyoruz. Beyan edilen yöntemin geçersiz kılınacağını hemen anlayabiliriz.
Java @override açıklamasının genel sözdizimi şöyledir:
public @interface override Aşağıdaki Java programı, @override açıklamasının kullanımını göstermektedir.
//base class definition class BaseClass { public void display() { System.out.println('BaseClass::display () method'); } } //derived class inheriting base class class DerivedClass extends BaseClass { @Override //indicates the display method being overridden public void display() { System.out.println('DerivedClass::display () method'); } } // main class public class Main { public static void main(String args()) { System.out.println('@Override Example'); //BaseClass type object;contain child object BaseClass testObj = new DerivedClass(); //call display method based on contents of object i.e. derived class display () testObj.display(); } } Çıktı:

Yukarıdaki programda, bir görüntüleme yöntemini tanımlayan bir BaseClass'a sahibiz. Sonra bu BaseClass'tan bir DerivedClass sınıfı türetiyoruz ve görüntüleme yöntemini @override annotation ile işaretliyoruz. Bu yöntem DerivedClass içinde geçersiz kılınır.
Ana yöntemde, bir BaseClass nesne referansı oluştururuz ve onu DerivedClass nesnesine yönlendiririz, bu da referansın DerivedClass görüntüleme yöntemini çağırmasına neden olur.
Türetilmiş sınıfta display () yöntemini uygulamasaydık, derleyici @override annotation ile işaretlendiği için bir derleyici uyarısı verirdi.
Java'da Aşırı Yükleme ve Geçersiz Kılma
Java'da hem aşırı yüklemeyi hem de geçersiz kılmayı tartıştığımıza göre, şimdi bu iki kavramı özetleyelim.
Aşırı yükleme, derleme zamanı polimorfizmiyle ilgilidir, yani aşırı yükleme kullanarak derleme zamanı polimorfizmini uygularız. Aşırı yükleme iki şekilde yapılır, yani Yöntem aşırı yükleme ve Operatör aşırı yükleme.
Metot aşırı yükleme, aynı isimde ancak farklı parametre listelerine sahip birden fazla metoda sahip olduğumuz tekniktir. Parametre listesi, parametre sayısına, parametre türlerine veya parametre sırasına göre farklılık gösterir.
Java'da operatör aşırı yüklemesi sınırlıdır ve yalnızca iki sayı eklemek ve iki String nesnesini birleştirmek için kullanılan '+' operatörünü aşırı yüklememize izin verir.
Aşırı yükleme, derleme zamanında çözülür ve statiktir. Aynı zamanda 'Erken ciltleme' .
Yöntem Geçersiz Kılma, çalışma zamanı polimorfizmini uyguladığımız bir özelliktir. Yöntemin geçersiz kılınmasında, ana sınıfın bir yöntemi alt sınıfta geçersiz kılınır. Bu, hem süper hem de alt sınıftaki yöntem prototipinin aynı kaldığı ancak uygulamaların farklı olduğu anlamına gelir.
Yöntemi geçersiz kılma, yöntem çağrısını çözmek ve bir üst sınıf veya alt sınıf yönteminin çağrılıp çağrılmayacağına karar vermek için dinamik yöntem gönderme tekniğini kullanır ve bu çalışma zamanında yapılır.
Bu nedenle, çalışma zamanı polimorfizmine dinamik polimorfizm veya geç bağlanma da denir.
Linux neden Windows 10'dan daha iyidir
Ardından, Java'da aşırı yükleme ve geçersiz kılma arasındaki farkları tablo halinde sıralayalım.
Java'da Vs Geçersiz Kılma Aşırı Yükleme
| Aşırı yükleme | Geçersiz kılma |
|---|---|
| Aşırı yükleme, derleme zamanı polimorfizminde kullanılır. | Geçersiz kılma, çalışma zamanı polimorfizminde uygulanır. |
| Aynı sınıfta yapılabilir. Miras gerektirebilir veya gerektirmeyebilir. | Geçersiz kılma her zaman miras gerektirir. |
| Yöntemler, aynı yöntem adı ve farklı parametre listesiyle aşırı yüklenmiştir. | Geçersiz kılınan yöntemler aynı prototiplere sahiptir. |
| Yöntem aşırı yüklemesinde dönüş türü dikkate alınmaz. | Geçersiz kılınan ve geçersiz kılınan yöntemlerde dönüş türü aynı olmalıdır. |
| Programın okunabilirliğini artırır. | Geçersiz kılma, belirli bir uygulama sınıfına sahip olmanızı sağlar. |
Sıkça Sorulan Sorular
S # 1) Statik yöntemi geçersiz kılabilir miyiz?
Cevap: Hayır. Java'da statik yöntemler geçersiz kılınamaz. Bunun nedeni, statik yöntemlerin sınıf temelli olması ve doğrudan sınıf tarafından çağrılmasıdır. Çalışma zamanında çağıracak nesnelere ihtiyaçları yoktur. Bu nedenle, statik yöntem gönderimi derleyici tarafından belirlenir.
S # 2) Oluşturucuyu geçersiz kılabilir miyiz?
Cevap: Hayır, bir kurucuyu geçersiz kılamayız. Nesne oluşturulduğunda bir kurucu çağrılır. Nesne olarak adlandırılmaz. Ayrıca, geçersiz kılmanın gerekliliklerinden biri geçersiz kılınan yöntemdir ve geçersiz kılma yöntemi, kurucular durumunda mümkün olmayan aynı yöntem imzasına sahip olmalıdır.
S # 3) Yöntem geçersiz kılma neden Dinamik Polimorfizm olarak adlandırılıyor?
Cevap: Yöntemin geçersiz kılınması durumunda, yöntem çağrısı çalışma zamanında dinamik olarak çözümlenir. Bu nedenle dinamik polimorfizm olarak adlandırılır.
S # 4) Java'da Dinamik Polimorfizmin kullanımı nedir?
Cevap: Dinamik polimorfizm, alt sınıfın geçersiz kılınan yönteme özel uygulama sağlayabilmesi için yöntemi geçersiz kılmayı destekleyen dinamik bir yöntem gönderme tekniği kullanır. Bu şekilde verimli programlar yazmamızı sağlayan belirli özellikleri uygulayabiliriz.
İkinci olarak, dinamik yöntem gönderimi hangi yöntemin çağrılacağına karar verdiğinden, yöntem çağrılarını çözme konusunda endişelenmemize gerek yoktur.
S # 5) Statik ve Dinamik Bağlama arasındaki fark nedir?
Cevap: Bir yöntem çağrısı ve uygulaması arasındaki bağlantıya bağlama denir. Bu bağlantı derleme zamanında çözüldüğünde, buna statik bağlama diyoruz. Bağlama çalışma zamanında dinamik olarak yapıldığında, onu dinamik bağlama olarak adlandırıyoruz.
Statik bağlama, yöntem çağrılarını çözmek için sınıf ve alanların veri türünü kullanır. Dinamik bağlama, yöntem çağrılarını çözmek için nesneleri kullanır. Statik bağlama, derleme zamanı polimorfizmi olarak da adlandırılır ve dinamik bağlama, çalışma zamanı polimorfizmi olarak da adlandırılır.
Sonuç
Bu eğitimde, Java'da çalışma zamanı polimorfizmini ayrıntılı olarak tartıştık.
Çalışma zamanı polimorfizmi, yöntemi geçersiz kılma kullanılarak uygulanır. Yöntemi geçersiz kılma, üst sınıfta tanımlanan bir yöntemin alt sınıfında yeniden tanımlandığı veya geçersiz kılındığı alt sınıfta yapılır. Yöntem imzası, üst ve alt sınıfta aynı kalır.
Yöntemin geçersiz kılınmasını kullanarak, alt sınıfta aynı yönteme özel uygulama sağlayabiliriz. Bu şekilde, kalıtımı içeren daha verimli programlar yazabiliriz. Java, yöntemin geçersiz kılınacağını belirtmek için @override notasyonu sağlar.
Varsayılan olarak, nihai olmayan tüm statik olmayan yöntemler Java'da sanaldır. Tüm sanal yöntemler geçersiz kılınabilir.
=> Basit Java Eğitim Serisine Buradan Dikkat Edin.
Önerilen Kaynaklar
- Java'da Önceden Tanımlanmış Yöntemleri Geçersiz Kılma
- Java String length () Yöntem Örneklerle
- Java'da Polimorfizm Nedir - Örneklerle Öğretici
- Java toString Yöntemi Nasıl Kullanılır?
- Kod Örnekleriyle Java String indexOf Yöntemi
- Java Dizesi () Örneklerle Yöntem Eğitimi içerir
- Java String Split () Yöntemi - Java'da Bir Dizeyi Bölme
- Programlama Örnekleriyle Java Dize Karşılaştırma Yöntemi