'Bu' ve ' Süper' anahtar kelimeler farklı bir bağlamda kullanılan ayrılmış kelimelerdir. Bunun yanı sıra Java şunları da sağlar: Bu() Ve Süper() yapıcı bağlamında kullanılan yapıcılar. Bu bölümde şunları tartışacağız: this ile süper anahtar kelime arasındaki farklar Ve this() ve super() yapıcısı, Java'da.
super anahtar sözcüğü ve super() yapıcısı
süper Anahtar Kelime
Temel sınıf yöntemini veya değişkenini çağırmak için kullanılan ayrılmış bir anahtar kelimeye, Süper anahtar kelime. kullanamıyoruz Süper anahtar kelime olarak tanımlayıcı . Super anahtar sözcüğü yalnızca temel sınıf örneğine değil aynı zamanda statik üyelere de atıfta bulunmak için kullanılır.
super() Yapıcı
Süper() esas olarak temel sınıf üye işlevlerini ve yapıcılarını çağırmak için kullanılır.
Her ikisine de örnek verelim Süper anahtar kelime ve Süper() nasıl çalıştıklarını anlamak için.
Süper Örnek1.java
// import required classes and packages package javaTpoint.MicrosoftJava; // create Animal class which is base class of Animal class Animal{ // data member of Animal class String color = 'white'; } // create child class of Animal class Cat extends Animal{ //default constructor Cat() { // data members of the Cat class String color = 'Brown'; System.out.println('The cat is of color '+super.color); // calling parent class data member System.out.println('The cat is of color '+color); } } // create child class for Car class SuperExample1 extendsCat { // default constructor SuperExample1() { // calling base class constructor super(); System.out.println('The eyes of the cat is blue.'); } // main() method start publicstaticvoid main(String[] args) { // call default constructor of the SuperExample1 new SuperExample1(); System.out.println('Inside Main'); } }
Çıktı:
Main() yönteminde bir açıklama yaptık yeni Süper Örnek1() . Yapıcıyı çağırır Süper Örnek1 sınıf.
Yapıcının içinde bir açıklama yaptık Süper() bu, ebeveyn sınıfının yapıcısını çağırır, yani, Kedi. Yapıcıda üç ifadede bulunduk:
- Rengi değerle başlat 'Kahverengi'.
- Ebeveyn sınıfı veri üyesini yazdırın.
- Geçerli sınıf veri üyesini yazdırın.
İkinci ifade yürütüldüğünde programın akışı, veri üyelerinin değerine erişmek için Animal sınıfına atlar. Ona eriştikten sonra akış sunucuya geri döner. Kedi sınıf yapıcısı ve onu yazdırır. Bundan sonra, son ifade geçerli sınıfın değişkenlerinin değerini yürütür ve yazdırır.
Son açıklamanın uygulanmasından sonra Kedi sınıf, akış sınıfın yapıcısına geri döner Süper Örnek1 ve kalan ifadeleri yürütür.
İşlemin tamamlanmasının ardından Süper Örnek1() , akış main() yöntemine geri döner ve kalan ifadeleri yürütür.
Not: super() işlevini kullanabilmek için, bunun bir sınıfın yapıcısındaki ilk ifade olması gerektiğinden emin olmalıyız. Bunu yalnızca ana sınıf yapıcısına atıfta bulunmak için kullanabiliriz.
this anahtar sözcüğü ve this() yapıcısı
bu anahtar kelime
Geçerli sınıf nesnesine atıfta bulunmak için kullanılan, Java'da ayrılmış bir anahtar kelimedir. Yöntemin çağrılmasını sağlayan bir referans değişkenidir. Bu anahtar kelimenin diğer kullanımları şunlardır:
- Mevcut sınıf örneği değişkenine atıfta bulunmak için bunu kullanabiliriz.
- Geçerli sınıf yöntemini (örtük olarak) çağırmak için kullanabiliriz.
- Bunu yöntem ve yapıcı çağrılarında argüman olarak iletebiliriz.
- Geçerli sınıf örneğini yöntemden döndürmek için de kullanabiliriz.
this() Yapıcı
Yapıcı aynı sınıftan diğer bir kurucuyu çağırmak için kullanılır. Her ikisine de örnek verelim Bu anahtar kelime ve Bu() nasıl çalıştıklarını anlamak için.
Bu Örnek1.java
// import required classes and packages package javaTpoint.MicrosoftJava; // create ThisExample1 class to understand the working of this() and this class ThisExample1 { // initialize instance and static variable int x = 5; staticinty = 10; // default constructor of class ThisExample1 ThisExample1() { // invoking current class constructor this(5); System.out.println('We are insie of the default constructor.'); System.out.println('The value of x = '+x); } ThisExample1(int x) { this.x = x; // override value of the current class instance variable System.out.println('We are inside of the parameterized constructor.'); System.out.println('The value of y = '+y); } publicstaticvoid main(String[] args) { // invoking constructor of the current class new ThisExample1(); System.out.println('Inside Main'); } }
Çıktı:
Bu ve süper anahtar kelime arasındaki fark
Aşağıdaki tabloda bu ve süper arasındaki temel fark açıklanmaktadır:
Bu | Süper |
---|---|
Sınıfın geçerli örneği bu anahtar kelimeyle temsil edilir. | Ebeveyn sınıfının geçerli örneği super anahtar sözcüğüyle temsil edilir. |
Geçerli sınıfın varsayılan yapıcısını çağırmak için bu anahtar kelimeyi kullanabiliriz. | Ebeveyn sınıfının varsayılan yapıcısını çağırmak için super anahtar sözcüğünü kullanabiliriz. |
Statik bir bağlamdan başvurulabilir. Bu, statik bağlamdan çağrılabileceği anlamına gelir. | Statik bir bağlamdan başvurulamaz. Bu, statik bir bağlamdan çağrılamayacağı anlamına gelir. |
Yalnızca mevcut sınıf veri üyelerine ve üye işlevlerine erişmek için kullanabiliriz. | Ana sınıfın veri üyelerine ve üye işlevlerine erişmek için kullanabiliriz. |
this() ve super() Yapıcı Arasındaki Fark
Bu() | Süper() |
---|---|
this() yapıcısı geçerli sınıf nesnesini ifade eder. | super() yapıcısı doğrudan ebeveyn sınıfı nesnesini ifade eder. |
Geçerli sınıf yöntemini çağırmak için kullanılır. | Ebeveyn sınıfı yöntemlerini çağırmak için kullanılır. |
Parametrelendirilmiş yapıcının herhangi bir yerinde kullanılabilir. | Çocuk sınıfı yapıcısının her zaman ilk satırıdır. |
Geçersiz kılınan bir yöntemin süper sınıf sürümünü çağırmak için kullanılır. | Geçersiz kılınan bir yöntemin süper sınıf sürümünü çağırmak için kullanılır. |