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

Polimorfisme Jawa

Polimorfisme Java

Dalam tutorial ini, kita akan belajar tentang polimorfisme Java dan implementasinya dengan bantuan contoh.

Polimorfisme adalah konsep penting dari pemrograman berorientasi objek. Ini berarti lebih dari satu bentuk.

Artinya, entitas yang sama (metode atau operator atau objek) dapat melakukan operasi yang berbeda dalam skenario yang berbeda.


Contoh:Polimorfisme Java

class Polygon {

  // method to render a shape
  public void render() {
    System.out.println("Rendering Polygon...");
  }
}

class Square extends Polygon {

  // renders Square
  public void render() {
    System.out.println("Rendering Square...");
  }
}

class Circle extends Polygon {

  // renders circle
  public void render() {
    System.out.println("Rendering Circle...");
  }
}

class Main {
  public static void main(String[] args) {
    
    // create an object of Square
    Square s1 = new Square();
    s1.render();

    // create an object of Circle
    Circle c1 = new Circle();
    c1.render();
  }
}

Keluaran

Rendering Square...
Rendering Circle...

Pada contoh di atas, kita telah membuat superclass:Polygon dan dua subkelas:Persegi dan Lingkaran . Perhatikan penggunaan render() metode.

Tujuan utama dari render() metode adalah untuk membuat bentuk. Namun, proses rendering persegi berbeda dengan proses rendering lingkaran.

Oleh karena itu, render() metode berperilaku berbeda di kelas yang berbeda. Atau, kita bisa mengatakan render() adalah polimorfik.


Mengapa Polimorfisme?

Polimorfisme memungkinkan kita untuk membuat kode yang konsisten. Pada contoh sebelumnya, kita juga dapat membuat metode yang berbeda:renderSquare() dan renderCircle() untuk membuat Persegi dan Lingkaran , masing-masing.

Ini akan bekerja dengan sempurna. Namun, untuk setiap bentuk, kita perlu membuat metode yang berbeda. Itu akan membuat kode kita tidak konsisten.

Untuk mengatasi ini, polimorfisme di Java memungkinkan kita untuk membuat satu metode render() yang akan berperilaku berbeda untuk bentuk yang berbeda.

Catatan :print() metode juga merupakan contoh polimorfisme. Ini digunakan untuk mencetak nilai dari berbagai jenis seperti char , int , string , dll.


Kita dapat mencapai polimorfisme di Java menggunakan cara berikut:

  1. Penggantian Metode
  2. Metode Kelebihan Beban
  3. Operator Kelebihan Beban

Penggantian Metode Java

Selama pewarisan di Jawa, jika metode yang sama ada di superclass dan subclass. Kemudian, metode di subclass menimpa metode yang sama di superclass. Ini disebut penggantian metode.

Dalam hal ini, metode yang sama akan melakukan satu operasi di superclass dan operasi lain di subclass. Misalnya,

Contoh 1:Polimorfisme menggunakan metode overriding

class Language {
  public void displayInfo() {
    System.out.println("Common English Language");
  }
}

class Java extends Language {
  @Override
  public void displayInfo() {
    System.out.println("Java Programming Language");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of Java class
    Java j1 = new Java();
    j1.displayInfo();

    // create an object of Language class
    Language l1 = new Language();
    l1.displayInfo();
  }
}

Keluaran :

Java Programming Language
Common English Language

Pada contoh di atas, kita telah membuat superclass bernama Language dan subkelas bernama Java . Di sini, metode displayInfo() hadir dalam Bahasa dan Java .

Penggunaan displayInfo() adalah untuk mencetak informasi. Namun, ia mencetak informasi yang berbeda dalam Bahasa dan Java .

Berdasarkan objek yang digunakan untuk memanggil metode, informasi terkait akan dicetak.

Catatan :Metode yang dipanggil ditentukan selama eksekusi program. Oleh karena itu, penggantian metode adalah polimorfisme run-time .


2. Kelebihan Metode Java

Di kelas Java, kita dapat membuat metode dengan nama yang sama jika parameternya berbeda. Misalnya,

void func() { ... }
void func(int a) { ... }
float func(double a) { ... }
float func(int a, float b) { ... }

Ini dikenal sebagai metode overloading di Jawa. Di sini, metode yang sama akan melakukan operasi yang berbeda berdasarkan parameter.

Contoh 3:Polimorfisme menggunakan metode overloading

class Pattern {

  // method without parameter
  public void display() {
    for (int i = 0; i < 10; i++) {
      System.out.print("*");
    }
  }

  // method with single parameter
  public void display(char symbol) {
    for (int i = 0; i < 10; i++) {
      System.out.print(symbol);
    }
  }
}

class Main {
  public static void main(String[] args) {
    Pattern d1 = new Pattern();

    // call method without any argument
    d1.display();
    System.out.println("\n");

    // call method with a single argument
    d1.display('#');
  }
}

Keluaran :

**********

##########

Pada contoh di atas, kita telah membuat sebuah kelas bernama Pattern . Kelas berisi metode bernama display() yang kelebihan beban.

// method with no arguments
display() {...}

// method with a single char type argument
display(char symbol) {...}

Di sini, fungsi utama display() adalah untuk mencetak pola. Namun, berdasarkan argumen yang diberikan, metode ini melakukan operasi yang berbeda:

  • mencetak pola * , jika tidak ada argumen yang diteruskan atau
  • mencetak pola parameter, jika satu char jenis argumen dilewatkan.

Catatan :Metode yang dipanggil ditentukan oleh compiler. Oleh karena itu, ini juga dikenal sebagai polimorfisme waktu kompilasi.


3. Overload Operator Java

Beberapa operator di Java berperilaku berbeda dengan operan yang berbeda. Misalnya,

  • + operator kelebihan beban untuk melakukan penambahan numerik serta penggabungan string, dan
  • operator seperti & , | , dan ! kelebihan beban untuk operasi logis dan bitwise.

Mari kita lihat bagaimana kita dapat mencapai polimorfisme menggunakan kelebihan operator.

+ operator digunakan untuk menambahkan dua entitas. Namun, di Java, + operator melakukan dua operasi.

1. Saat + digunakan dengan angka (bilangan bulat dan angka floating-point), ia melakukan penjumlahan matematis. Misalnya,

int a = 5;
int b = 6;

// + with numbers
int sum = a + b;  // Output = 11

2. Saat kita menggunakan + operator dengan string, ia akan melakukan penggabungan string (menggabungkan dua string). Misalnya,

String first = "Java ";
String second = "Programming";

// + with strings
name = first + second;  // Output = Java Programming

Di sini, kita dapat melihat bahwa + operator kelebihan beban di Jawa untuk melakukan dua operasi:penambahan dan gabungan .

Catatan :Dalam bahasa seperti C++, kita dapat mendefinisikan operator untuk bekerja secara berbeda untuk operan yang berbeda. Namun, Java tidak mendukung kelebihan beban operator yang ditentukan pengguna.


Variabel Polimorfik

Sebuah variabel disebut polimorfik jika mengacu pada nilai yang berbeda dalam kondisi yang berbeda.

Variabel objek (variabel instance) mewakili perilaku variabel polimorfik di Jawa. Hal ini karena variabel objek dari suatu kelas dapat merujuk ke objek dari kelasnya maupun objek dari subkelasnya.

Contoh:Variabel Polimorfik

class ProgrammingLanguage {
  public void display() {
    System.out.println("I am Programming Language.");
  }
}

class Java extends ProgrammingLanguage {
  @Override
  public void display() {
    System.out.println("I am Object-Oriented Programming Language.");
  }
}

class Main {
  public static void main(String[] args) {

    // declare an object variable
    ProgrammingLanguage pl;

    // create object of ProgrammingLanguage
    pl = new ProgrammingLanguage();
    pl.display();

    // create object of Java class
    pl = new Java();
    pl.display();
  }
}

Keluaran :

I am Programming Language.
I am Object-Oriented Programming Language.

Pada contoh di atas, kita telah membuat variabel objek pl dari Bahasa Pemrograman kelas. Di sini, pl adalah variabel polimorfik. Ini karena,

  • Dalam pernyataan pl = new ProgrammingLanguage() , pl merujuk ke objek ProgrammingLanguage kelas.
  • Dan, dalam pernyataan pl = new Java() , pl merujuk ke objek Java kelas.

Ini adalah contoh upcasting di Java.


java

  1. Operator Jawa
  2. Antarmuka Jawa
  3. Java mencoba-dengan-sumber daya
  4. Anotasi Jawa
  5. Jenis Anotasi Java
  6. String Length() Metode di Java:Cara menemukan dengan Contoh
  7. Java String indexOf() Metode dengan Substring &Contoh
  8. Metode Java String charAt() dengan Contoh
  9. Java String EndsWith() Metode dengan Contoh
  10. Java String replace(), replaceAll() dan replaceFirst() metode