Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

super jawa

Java super

Dalam tutorial ini, kita akan belajar tentang kata kunci super di Java dengan bantuan contoh.

super kata kunci di Java digunakan dalam subclass untuk mengakses anggota superclass (atribut, konstruktor, dan metode).

Sebelum kita mempelajari tentang super kata kunci, pastikan untuk mengetahui tentang pewarisan Java.


Penggunaan kata kunci super

  1. Untuk memanggil metode superclass yang ditimpa di subclass.
  2. Untuk mengakses atribut (bidang) superclass jika superclass dan subclass memiliki atribut dengan nama yang sama.
  3. Untuk secara eksplisit memanggil superclass no-arg (default) atau konstruktor berparameter dari konstruktor subclass.

Mari kita pahami masing-masing kegunaan ini.


1. Akses Metode yang Diganti dari superclass

Jika metode dengan nama yang sama didefinisikan di kedua superclass dan subclass, metode di subclass menimpa metode di superclass. Ini disebut penggantian metode.

Contoh 1:Penggantian metode

class Animal {

  // overridden method
  public void display(){
    System.out.println("I am an animal");
  }
}

class Dog extends Animal {

  // overriding method
  @Override
  public void display(){
    System.out.println("I am a dog");
  }

  public void printMessage(){
    display();
  }
}

class Main {
  public static void main(String[] args) {
    Dog dog1 = new Dog();
    dog1.printMessage();
  }
}

Keluaran

I am a dog

Dalam contoh ini, dengan membuat objek dog1 dari Anjing kelas, kita dapat memanggil metodenya printMessage() yang kemudian mengeksekusi display() pernyataan.

Sejak display() didefinisikan di kedua kelas, metode subkelas Anjing menimpa metode superclass Hewan . Oleh karena itu, display() dari subkelas disebut.

Bagaimana jika metode superclass yang diganti harus dipanggil?

Kami menggunakan super.display() jika metode yang diganti display() kelas super Hewan perlu dipanggil.

Contoh 2:super untuk Memanggil Metode Superclass

class Animal {

  // overridden method
  public void display(){
    System.out.println("I am an animal");
  }
}

class Dog extends Animal {

  // overriding method
  @Override
  public void display(){
    System.out.println("I am a dog");
  }

  public void printMessage(){

    // this calls overriding method
    display();

    // this calls overridden method
    super.display();
  }
}

class Main {
  public static void main(String[] args) {
    Dog dog1 = new Dog();
    dog1.printMessage();
  }
}

Keluaran

I am a dog
I am an animal

Berikut cara kerja program di atas.


2. Akses Atribut Superclass

Superclass dan subclass dapat memiliki atribut dengan nama yang sama. Kami menggunakan super kata kunci untuk mengakses atribut superclass.

Contoh 3:Akses atribut superclass

class Animal {
  protected String type="animal";
}

class Dog extends Animal {
  public String type="mammal";

  public void printType() {
    System.out.println("I am a " + type);
    System.out.println("I am an " + super.type);
  }
}

class Main {
  public static void main(String[] args) {
    Dog dog1 = new Dog();
    dog1.printType();
  }
}

Keluaran :

I am a mammal
I am an animal

Dalam contoh ini, kami telah mendefinisikan bidang instance yang sama type di kedua superclass Hewan dan subkelas Anjing .

Kami kemudian membuat objek dog1 dari Anjing kelas. Kemudian, printType() metode dipanggil menggunakan objek ini.

Di dalam printType() fungsi,

Oleh karena itu, System.out.println("I am a " + type); prints Saya adalah mamalia . Dan, System.out.println("I am an " + super.type); mencetak Saya adalah binatang .


3. Penggunaan super() untuk mengakses konstruktor superclass

Seperti yang kita ketahui, ketika sebuah objek kelas dibuat, konstruktor defaultnya secara otomatis dipanggil.

Untuk memanggil konstruktor superclass secara eksplisit dari konstruktor subclass, kita menggunakan super() . Ini adalah bentuk khusus dari super kata kunci.

super() hanya dapat digunakan di dalam konstruktor subkelas dan harus menjadi pernyataan pertama.

Contoh 4:Penggunaan super()

class Animal {

  // default or no-arg constructor of class Animal
  Animal() {
    System.out.println("I am an animal");
  }
}

class Dog extends Animal {

  // default or no-arg constructor of class Dog
  Dog() {

    // calling default constructor of the superclass
    super();

    System.out.println("I am a dog");
  }
}

class Main {
  public static void main(String[] args) {
    Dog dog1 = new Dog();
  }
}

Keluaran

I am an animal
I am a dog

Di sini, ketika sebuah objek dog1 dari Anjing kelas dibuat, secara otomatis memanggil konstruktor default atau tanpa argumen dari kelas tersebut.

Di dalam konstruktor subkelas, super() pernyataan memanggil konstruktor superclass dan mengeksekusi pernyataan di dalamnya. Oleh karena itu, kita mendapatkan output Saya adalah binatang .

Alur program kemudian kembali ke konstruktor subclass dan mengeksekusi pernyataan yang tersisa. Jadi, Saya adalah seekor anjing akan dicetak.

Namun, menggunakan super() tidak wajib. Meskipun super() tidak digunakan dalam konstruktor subclass, compiler secara implisit memanggil konstruktor default dari superclass.

Jadi, mengapa menggunakan kode yang berlebihan jika kompilator secara otomatis memanggil super()?

Diperlukan jika konstruktor berparameter (konstruktor yang mengambil argumen) superclass harus dipanggil dari konstruktor subclass.

Parameter super() harus selalu menjadi pernyataan pertama di badan konstruktor subkelas, jika tidak, kita mendapatkan kesalahan kompilasi.

Contoh 5:Panggil Konstruktor Berparameter Menggunakan super()

class Animal {

  // default or no-arg constructor
  Animal() {
    System.out.println("I am an animal");
  }

  // parameterized constructor
  Animal(String type) {
    System.out.println("Type: "+type);
  }
}

class Dog extends Animal {

  // default constructor
  Dog() {

    // calling parameterized constructor of the superclass
    super("Animal");

    System.out.println("I am a dog");
  }
}

class Main {
  public static void main(String[] args) {
    Dog dog1 = new Dog();
  }
}

Keluaran

Type: Animal
I am a dog

Kompiler dapat secara otomatis memanggil konstruktor no-arg. Namun, itu tidak dapat memanggil konstruktor berparameter.

Jika konstruktor berparameter harus dipanggil, kita perlu mendefinisikannya secara eksplisit di konstruktor subkelas.

Perhatikan bahwa dalam contoh di atas, kami secara eksplisit memanggil konstruktor berparameter super("Animal") . Kompiler tidak memanggil konstruktor default superclass dalam kasus ini.


java

  1. Operator Jawa
  2. Komentar Jawa
  3. Java untuk setiap Loop
  4. String Jawa
  5. Antarmuka Jawa
  6. Kelas Anonim Java
  7. Java mencoba-dengan-sumber daya
  8. Anotasi Jawa
  9. Pernyataan Jawa
  10. Vektor Jawa