JavaRush /Java Blog /Random-ID /Rehat kopi #111. Polimorfisme dan pengikatan dinamis di J...

Rehat kopi #111. Polimorfisme dan pengikatan dinamis di Java. For loop di Java + contoh sintaks forEach loop

Dipublikasikan di grup Random-ID

Polimorfisme dan pengikatan dinamis di Java

Sumber: DZone Polimorfisme adalah salah satu konsep inti pemrograman berorientasi objek. Baik Anda baru mengenal pemrograman Java atau pengembang berpengalaman, Anda harus mengetahui apa itu polimorfisme dan cara kerjanya. Sebagian besar pengembang mengaku berpengalaman dalam topik ini, namun jika menyangkut fitur kompleks lainnya seperti pengikatan statis dan dinamis, banyak dari mereka kehilangan kepercayaan. Rehat kopi #111.  Polimorfisme dan pengikatan dinamis di Java.  For loop di Java + contoh sintaks forEach loop - 1

Apa itu polimorfisme di Jawa?

Polimorfisme artinya mempunyai banyak bentuk. Dalam pemrograman, ini mengacu pada kemampuan sinyal atau pesan untuk muncul dalam lebih dari satu bentuk.

Contoh kehidupan nyata

Seseorang dapat menunjukkan banyak karakteristik pada saat yang bersamaan. Misalnya, seorang ibu bisa sekaligus menjadi istri, anak perempuan, saudara perempuan, pegawai perusahaan, dan sebagainya. Oleh karena itu, seseorang mungkin menunjukkan karakteristik yang berbeda dalam kondisi yang berbeda. Ini dikenal sebagai polimorfisme.

Pentingnya Polimorfisme

Polimorfisme adalah salah satu fitur terpenting dari bahasa pemrograman berorientasi objek (misalnya Java). Dengan bantuan polimorfisme, tugas yang sama dapat dilakukan dengan cara yang berbeda.

Jenis polimorfisme

Di Java, polimorfisme dapat dibagi menjadi dua kategori:
  1. Polimorfisme waktu kompilasi (tautan statis)
  2. Polimorfisme runtime (Runtime, pengikatan dinamis)

Polimorfisme waktu kompilasi

Polimorfisme waktu kompilasi juga dikenal sebagai tautan statis. Jenis polimorfisme ini dapat dicapai melalui kelebihan fungsi atau kelebihan operator. Namun di Java, ini terbatas pada kelebihan beban fungsi karena Java tidak mendukung kelebihan beban operator. Fungsi Berlebihan Ketika ada setidaknya dua fungsi atau metode dengan nama fungsi yang sama, tetapi jumlah parameter yang dikandungnya berbeda, atau setidaknya satu tipe data dari parameter terkait berbeda (atau keduanya), maka disebut fungsi atau metode kelebihan beban, dan fungsi ini dikenal sebagai fungsi kelebihan beban. Contoh 1 Sejauh ini kita telah mempelajari apa itu fungsi kelebihan beban. Sekarang mari kita coba mendemonstrasikan fungsi perangkat lunak yang kelebihan beban.
class Main {

    // Method 1
    // Method with 2 integer parameters
    static int Addition(int a, int b)
    {

        // Returns sum of integer numbers
        return a + b;
    }
    // Method 2
    // having the same name but with 2 double parameters
    static double Addition(double a, double b)
    {
        // Returns sum of double numbers
        return a + b;
    }
    public static void main(String args[]) {

        // Calling method by passing
        // input as in arguments
        System.out.println(Addition(12, 14));
        System.out.println(Addition(15.2, 16.1));

    }
}
Anda dapat menjalankan program di atas di sini . Penjelasan program:
  • Program di atas terdiri dari dua fungsi statis dengan nama yang sama: Addition .

  • Di sini, kedua fungsi berisi jumlah parameter yang sama, tetapi parameter terkaitnya berbeda.

  • Metode 1 menerima dua parameter bilangan bulat, sedangkan Metode 2 menerima dua parameter ganda .

  • Dari fungsi utama, pertama-tama kita memanggil fungsi Addition(12, 14) . Parameter yang dilewatkan adalah bilangan bulat (12 dan 14), sehingga Metode 1 akan dipanggil di sini.

  • Kemudian kami memanggil fungsi Addition(15.2, 16.1) . Karena parameter yang diteruskan adalah tipe data ganda (15.2 dan 16.1), kali ini Metode 2 akan dipanggil .

  • Ini adalah bagaimana fungsi kelebihan beban dicapai di Java berdasarkan tipe data parameter yang berbeda.

Contoh 2 Perhatikan program di bawah ini:
class Main {

    // Method 1
    // Method with 2 integer parameters
    static int Addition(int a, int b)
    {

        // Returns sum of integer numbers
        return a + b;
    }

    // Method 2
    // having the same name but with 3 integer parameters
    static double Addition(double a, double b)
    {

        // Returns sum of integer numbers
        return a + b;
    }
    public static void main(String args[]) {

        // Calling method by passing
        // input as in arguments
        System.out.println(Addition(12, 14));
        System.out.println(Addition(15.2, 16.1));

    }
}
Anda dapat menjalankan program di atas di sini . Penjelasan program:
  • Program di atas terdiri dari dua fungsi statis dengan nama yang sama: Addition .

  • Di sini, kedua fungsi tersebut berisi jumlah parameter yang berbeda, tetapi tipe data dari dua parameter pertama yang bersesuaian adalah sama (integer).

  • Metode 1 mengambil dua parameter bilangan bulat, dan Metode 2 mengambil tiga parameter tipe data bilangan bulat.

  • Dari fungsi utama, pertama-tama kita memanggil fungsi Addition(2, 3) . Karena parameter yang diteruskan adalah bilangan bulat (2 dan 3), mereka akan memanggil Metode 1 di sini .

  • Kemudian kita memanggil fungsi Addition(4, 5, 6) . Parameter yang dilewatkan adalah tipe data ganda (4, 5, 6), sehingga kali ini akan memanggil Metode 2 .

  • Ini adalah bagaimana fungsi di-overload di Java berdasarkan jumlah parameter yang berbeda.

Contoh 3
class Main {

    // Method 1
    // Method with 2 integer parameters
    static int Addition(int a, int b)
    {
        // Return the sum
        return a + b;
    }
    // Method 2
    // having the same name but with 3 parameters
    // 1st parameter is of type double and other parameters
    // are of type integer
    static double Addition(double a, int b,  int c)
    {
        // Return the sum
        return a + b + c;
    }
    public static void main(String args[]) {

        // Calling method by passing
        // input as in arguments
        System.out.println(Addition(2, 4));
        System.out.println(Addition(4.2, 6, 10));

    }
}
Anda dapat menjalankan program di atas di sini . Penjelasan program:
  • Program di atas terdiri dari dua fungsi statis dengan nama yang sama: Addition .

  • Kedua fungsi tersebut berisi jumlah parameter yang berbeda dan tipe data elemen pertama yang bersesuaian juga berbeda.

  • Metode 1 mengambil dua parameter integer, sedangkan Metode 2 mengambil tiga parameter - yang pertama bertipe double dan dua lainnya bertipe data integer.

  • Dari fungsi utama, pertama-tama kita memanggil fungsi Addition(2, 4) . Karena parameter yang diteruskan adalah bilangan bulat (2 dan 4), mereka akan memanggil Metode 1 di sini .

  • Kemudian kita memanggil fungsi Addition(4.2, 6, 10) . Parameter pertama yang dilewatkan adalah bertipe integer dan parameter sisanya bertipe data double (4.2, 6, 10), sehingga Metode 2 akan dipanggil kali ini .

  • Beginilah cara Java mencapai kelebihan fungsi berdasarkan jumlah parameter yang berbeda serta tipe data berbeda dari parameter terkait.

Catatan. Suatu fungsi tidak dapat di-overload hanya berdasarkan tipe kembalian fungsi tersebut.

Polimorfisme waktu proses

Opsi ini juga dikenal sebagai tautan dinamis. Dalam proses ini, pemanggilan fungsi yang dibuat untuk fungsi lain hanya diperbolehkan pada saat runtime. Kita dapat mencapai pengikatan dinamis di Java menggunakan metode overriding.

Penggantian metode

Penggantian metode di Java terjadi ketika metode di kelas dasar memiliki definisi di kelas turunan. Metode atau fungsi kelas dasar disebut metode yang diganti.
// Class 1
class Parent {

    // Print method
    void Print()
    {

        // Print statement
        System.out.println("Inside Parent Class");
    }
}

// Class 2
class Child1 extends Parent {

    // Print method
    void Print() { System.out.println("Inside Child1 Class"); }
}

// Class 3
class Child2 extends Parent {

    // Print method
    void Print()
    {
        // Print statement
        System.out.println("Inside Child2 Class");
    }
}

class Main {

    public static void main(String args[]) {

        // Creating an object of class Parent
        Parent parent = new Parent();
        parent.Print();

        // Calling print methods
        parent = new Child1();
        parent.Print();

        parent = new Child2();
        parent.Print();
    }
}
Anda dapat menjalankan program di atas di sini . Penjelasan program:
  • Program di atas terdiri dari tiga kelas: Induk ( kelas 1 ), Anak1 ( kelas 2 ) dan Anak2 ( kelas 3 ). Kelas 2 dan kelas 3 mewarisi kelas 1 .

  • Induk memiliki metode yang disebut Print() . Di dalam fungsi ini kita mencetak " Inside Parent Class ". Child1 dan Child2 juga memiliki fungsi Print() , yang pada dasarnya mengesampingkan fungsi Print() dari kelas Induk dan mencetak " Inside Child1 Class " dan " Inside Child2 Class " masing-masing ke konsol.

  • Dari fungsi utama, pertama-tama kita membuat objek kelas induk yang disebut induk. Kami kemudian menggunakan objek ini untuk memanggil metode cetak kelas induk . Oleh karena itu " Inside Parent Class " akan dicetak di konsol.

  • Setelah itu, kita memanggil konstruktor default kelas Child1 dan memanggil fungsi Print() . Perhatikan bahwa metode Print() yang didefinisikan dalam kelas Child1 sekarang akan dipanggil karena kita telah mengganti metode Print() dari kelas induk . Oleh karena itu, " Inside Child1 Class " akan dicetak di konsol.

  • Terakhir, kita memanggil konstruktor default kelas Child2 dan memanggil fungsi Print() . Di sini metode Print() yang didefinisikan dalam kelas Child2 akan dipanggil karena kita telah mengganti metode Print() dari kelas induk . Oleh karena itu, “ Inside Child2 Class ” akan dicetak di konsol.

  • Ini adalah bagaimana metode overriding dicapai di Java.

Hasil

Pada artikel ini, kita mempelajari apa itu polimorfisme di Java. Kami kemudian mempelajari topik ini lebih dalam dan mendiskusikan dua jenis polimorfisme di Java: polimorfisme waktu kompilasi dan polimorfisme waktu proses. Kami telah menunjukkan melalui program bagaimana pengikatan statis dan dinamis dapat dicapai di Java.

For loop di Java + contoh sintaks forEach loop

Sumber: FreeCodeCamp Loop dalam pemrograman adalah rangkaian instruksi yang dijalankan secara terus menerus hingga kondisi tertentu terpenuhi. Pada artikel ini, kita akan mempelajari tentang loop for dan forEach di Java. Rehat kopi #111.  Polimorfisme dan pengikatan dinamis di Java.  For loop di Java + contoh sintaks forEach loop - 2

Untuk Sintaks Loop di Java

Berikut ini sintaks untuk membuat perulangan for :
for (initialization; condition; increment/decrement) {
   // code to be executed
}
Mari kita lihat beberapa kata kunci dalam kode:
  • for menunjukkan bahwa kita akan membuat loop. Diikuti dengan tanda kurung, yang berisi semua yang kita perlukan agar loop kita berfungsi.

  • inisialisasi mendefinisikan variabel awal sebagai titik awal perulangan, biasanya bilangan bulat.

  • kondisi menentukan berapa kali loop harus dieksekusi.

  • kenaikan / penurunan menambah /mengurangi nilai variabel awal setiap kali loop dijalankan. Ketika nilai variabel bertambah/menurun, maka cenderung ke kondisi yang ditentukan.

  • Perhatikan bahwa setiap kata kunci dipisahkan dengan titik koma ( ; ).

Berikut beberapa contohnya:
for(int x = 1; x <=5; x++) {
  System.out.println(x);
}

/*
1
2
3
4
5
*/
Pada contoh di atas, variabel awalnya adalah x dengan nilai 1. Perulangan akan terus berjalan selama nilai x kurang dari atau sama dengan 5 - ini syaratnya. x++ menambah nilai x setelah setiap proses. Kami terus mencetak nilai x yang berhenti setelah 5 karena syaratnya terpenuhi. Menaikkan ke 6 tidak mungkin dilakukan karena lebih besar dari dan tidak sama dengan 5. Pada contoh berikut, kita akan menggunakan perulangan for untuk mencetak semua nilai dalam array.
int[] randomNumbers = {2, 5, 4, 7};
for (int i = 0; i < randomNumbers.length; i++) {
  System.out.println(randomNumbers[i]);
}

// 2
// 5
// 4
// 7
Ini hampir sama dengan contoh terakhir. Di sini kita menggunakan panjang array sebagai syarat dan nilai awal variabel sebagai nol karena nomor urut elemen pertama array adalah nol.

sintaksis loop forEach di Java

Perulangan forEach digunakan secara khusus untuk melakukan iterasi melalui elemen-elemen array. Seperti inilah sintaksnya:
for (dataType variableName : arrayName) {
  // code to be executed
}
Anda akan melihat bahwa sintaksis di sini lebih pendek daripada for loop . Dan perulangan forEach juga dimulai dengan kata kunci for . Daripada menginisialisasi variabel dengan nilai, pertama-tama kita tentukan tipe datanya (harus cocok dengan tipe data array). Ini diikuti dengan nama variabel dan nama array , dipisahkan dengan titik dua. Berikut ini contoh untuk membantu Anda memahami sintaksis dengan lebih baik:
int[] randomNumbers = {2, 5, 4, 7};
for (int x : randomNumbers) {
  System.out.println(x + 1);
}

/*
3
6
5
8
*/
Dalam contoh ini, kita telah melakukan iterasi pada setiap elemen dan menambah nilai awalnya sebesar 1. Secara default, loop berhenti setelah melakukan iterasi pada semua elemen array. Ini berarti bahwa kita tidak perlu meneruskan nilai apa pun ke variabel kita atau menentukan kondisi apa pun agar perulangan berakhir.

Kesimpulan

Pada artikel ini, kita mempelajari apa itu loop dan sintaks untuk membuat loop for dan forEach di Java. Kami juga melihat beberapa contoh yang membantu kami memahami kapan dan bagaimana menggunakannya. Selamat membuat kode!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION