Polimorfisme Jawa (Dengan Contoh)

Dalam tutorial ini, kita akan belajar mengenai polimorfisme Java dan pelaksanaannya dengan bantuan contoh.

Polimorfisme adalah konsep penting pengaturcaraan berorientasikan objek. Ini bermaksud lebih daripada satu bentuk.

Artinya, entiti yang sama (kaedah atau pengendali atau objek) dapat melakukan operasi yang berbeza dalam senario yang berbeza.

Contoh: Polimorfisme Jawa

 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(); ) )

Pengeluaran

 Rendering Square… Rendering Circle… 

Dalam contoh di atas, kami telah mencipta superclass: Polygon dan dua subclass: Square and Circle. Perhatikan penggunaan render()kaedah.

Tujuan utama render()kaedah ini adalah untuk menjadikan bentuknya. Namun, proses rendering sebuah segi empat sama dengan proses rendering sebuah bulatan.

Oleh itu, render()kaedah ini berkelakuan berbeza di kelas yang berbeza. Atau, boleh kita katakan render()adalah polimorfik.

Mengapa Polimorfisme?

Polimorfisme membolehkan kita membuat kod yang konsisten. Dalam contoh sebelumnya, kita juga dapat membuat kaedah yang berbeza: renderSquare()dan renderCircle()untuk menghasilkan Square dan Circle, masing-masing.

Ini akan berfungsi dengan sempurna. Namun, untuk setiap bentuk, kita perlu membuat kaedah yang berbeza. Ini akan menjadikan kod kami tidak konsisten.

Untuk menyelesaikannya, polimorfisme di Jawa memungkinkan kita membuat satu kaedah render()yang akan berperilaku berbeza untuk pelbagai bentuk.

Catatan : print()Kaedah ini juga merupakan contoh polimorfisme. Ia digunakan untuk mencetak nilai jenis suka char, int, string, dan lain-lain

Kita dapat mencapai polimorfisme di Jawa dengan cara berikut:

  1. Kaedah Mengatasi
  2. Kaedah Membebankan
  3. Beban Pengendali

Kaedah Java Menimpa

Semasa pewarisan di Java, jika kaedah yang sama ada di superclass dan subclass. Kemudian, kaedah dalam subkelas mengatasi kaedah yang sama di superclass. Ini dipanggil kaedah overriding.

Dalam kes ini, kaedah yang sama akan melakukan satu operasi di kelas super dan satu operasi lain di subkelas. Sebagai contoh,

Contoh 1: Polimorfisme menggunakan kaedah mengatasi

 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 :

 Bahasa Pengaturcaraan Java Bahasa Inggeris Umum

Dalam contoh di atas, kami telah membuat superclass bernama Language dan subclass bernama Java. Di sini, kaedah displayInfo()ini terdapat dalam Bahasa dan Java.

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

Berdasarkan objek yang digunakan untuk memanggil kaedah, maklumat yang sesuai dicetak.

Kerja Polimorfisme Java

Catatan : Kaedah yang dipanggil ditentukan semasa pelaksanaan program. Oleh itu, kaedah mengatasi adalah polimorfisme jangka masa .

2. Kaedah Java Overloading

Dalam kelas Java, kita dapat membuat kaedah dengan nama yang sama jika mereka berbeza dalam parameter. Sebagai contoh,

 void func() (… ) void func(int a) (… ) float func(double a) (… ) float func(int a, float b) (… )

Ini dikenali sebagai kaedah overloading di Java. Di sini, kaedah yang sama akan melakukan operasi yang berbeza berdasarkan parameter.

Contoh 3: Polimorfisme menggunakan kaedah 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(""); // call method with a single argument d1.display('#'); ) )

Keluaran :

 ********** ##########

Dalam contoh di atas, kami telah membuat kelas bernama Pola. Kelas mengandungi kaedah yang diberi nama display()yang berlebihan.

 // method with no arguments display() (… ) // method with a single char type argument display(char symbol) (… )

Di sini, fungsi utama display()adalah mencetak corak. Namun, berdasarkan argumen yang dilalui, metode ini melakukan operasi yang berbeza:

  • mencetak corak *, jika tidak ada hujah yang diluluskan atau
  • mencetak pola parameter, jika charargumen jenis tunggal dilalui.

Catatan : Kaedah yang dipanggil ditentukan oleh penyusun. Oleh itu, ia juga dikenali sebagai polimorfisme masa kompilasi.

3. Kelebihan Operator Java

Beberapa pengendali di Jawa berkelakuan berbeza dengan operasi yang berbeza. Sebagai contoh,

  • + operator is overloaded to perform numeric addition as well as string concatenation, and
  • operators like &, |, and ! are overloaded for logical and bitwise operations.

Let's see how we can achieve polymorphism using operator overloading.

The + operator is used to add two entities. However, in Java, the + operator performs two operations.

1. When + is used with numbers (integers and floating-point numbers), it performs mathematical addition. For example,

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

2. When we use the + operator with strings, it will perform string concatenation (join two strings). For example,

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

Here, we can see that the + operator is overloaded in Java to perform two operations: addition and concatenation.

Note: In languages like C++, we can define operators to work differently for different operands. However, Java doesn't support user-defined operator overloading.

Polymorphic Variables

A variable is called polymorphic if it refers to different values under different conditions.

Object variables (instance variables) represent the behavior of polymorphic variables in Java. It is because object variables of a class can refer to objects of its class as well as objects of its subclasses.

Example: Polymorphic Variables

 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(); ) )

Output:

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

Dalam contoh di atas, kami telah membuat pemboleh ubah objek dari kelas ProgrammingLanguage. Di sini, pl adalah pemboleh ubah polimorfik. Ini adalah kerana,

  • Dalam pernyataan pl = new ProgrammingLanguage(), sila rujuk objek kelas ProgrammingLanguage.
  • Dan, dalam pernyataan pl = new Java(), rujuk pada objek kelas Java.

Ini adalah contoh penyiaran di Java.

Artikel menarik...