Implementasi Overriding dan Overloading Dalam Java

Pengantar

Overloading dan Overriding sejatinya merupakan implementasi dari konsep Polymorpism pada PBO. Sebagaimana namanya, Polymorpism memiliki arti banyak bentuk. Implementasi dalam pemrogramannya adalah sebuah method yang sama, tapi bisa memiliki bentuk yang berbeda. Baik isinya berbeda, maupun paramenter yang dibutuhkannya yang berbeda.

Pada tutorial kali ini, kita akan mencoba mengimplementasikan konsep Overriding dan Overloading pada Java, khususnya dengan menggunakan IDE Netbeans. Namun sebelumnya, mari kita ulas terlebih dahulu definisi dari ketua istilah tersebut.

Apa itu Overriding?

Overriding bisa terjadi Jika suatu kelas mewarisi metode dari super kelasnya, maka ada peluang kelas ini untuk menimpa metode asalkan tidak ditandai sebagai final. Misalkan kita sebuah superclass bernama hewan, memiliki sub class bernama kucing. Kedua kelas tersebut memiliki method yang sama, misalkan saja nama method-nya adalah method jalan. Maka ketika kita membuat instansiasi kelas kucing, kemudian akan memanfaatkan method jalan, compiler akan menjalankan method jalan di kelas kucing yang telah me-overriding method jalan di kelas hewan (kelas utamanya).

Apa itu Overloading?

Sedikit berbeda dengan Overriding, Overloading berlaku jika method yang “ditimpa” memiliki parameter yang berbeda. Pada contoh diatas, kita menimpa method jalan yang ada di kelas hewan dengan method jalan yang ada pada kelas kucing. Nah, jika kita membedakan method jalan pada kelas kucing dengan parameter yang berbeda (misal jadi jalan(int kecepatan)) maka itu disebut edngan Overloading.

Overloading memungkinkan berbagai method yang berbeda untuk memiliki nama yang sama, tetapi dengan signature(parameter) yang berbeda pada bahasa pemrograman Java. Signature dapat berbeda oleh angka dari input parameter atau tipe dari input parameter atapun juga keduanya.

Manfaat Overriding dan Overloading

 Manfaat dari overriding pada Java adalah kemampuan untuk mendefinisikan perilaku yang spesifik untuk tipe subclass, yang berarti subclass dapat mengimplementasikan metode parent class berdasarkan kebutuhannya.

Sedangkan manfaat dari overloading adalah kita tidak perlu menciptakan dan mengingat nama-nama fungsi yang berbeda untuk melakukan tugas yang sama.

Mencoba Overriding

Berikutnya, mari kita coba implementasikan konsep Overriding ini pada netbeans. Silakan Anda buat project baru, kemudian buat layout seperti berikut: (Jika Anda lupa lagi cara untuk membuat project baru, silakan baca artikelnya disini)

Buat tampilan seperti gambar berikut

Buat Desain Berikut

Ubah variabel

Berikutnya, ubah nama variabel pada beberdapa komponen. Untuk textfield username, ubah nama variabelnya menjadi tfUsername. Kemudian untuk password ubah menjadi tfPassword. Kemudian untuk tombol login ubah menjadi btnLogin. Terakhir, untuk label status ubah menjadi labelStatus. Sehingga, jika dilihat kode sumber di frame tersebut akan menjadi seperti berikut.

    private javax.swing.JButton btnLogin;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel labelStatus;
    private javax.swing.JTextField tfPassword;
    private javax.swing.JTextField tfUsername;

Buat kelas baru dengan nama Pengguna

Silakan buat kelas baru, kemudian beri nama kelas tersebut dengan nama kelas pengguna.

Klik kanan di package > New > Java Class

Setelah kelas pengguna dibuat, kemudian tuliskan kode program berikut

package ac.id.umtas.pti.overriding;

public class Pengguna {
    public boolean login(String username, String password)
    {
        if (username.equalsIgnoreCase("Admin"))
        {
            return password.equals("123456789");
        }else 
        {
            return false;
        }
    }
}

Pada kode sumber diatas dapat dilihat bahwa kita telah menambahkan method login pada kelas pengguna. Method login tersebut memiliki dua paramter, pertama adalah username dan satunya lagi adalah password. Perhatikan bahwa kita telah menambahkan logika login, dengan ketentuan ketika username yang dikirimnya adalah admin dan password-nya adalah 123456789 maka login akan dinyatakan valid.

Buat kelas Mahasiswa

Langkah berikutnya, kita akan membuat kelas baru. Silakan buat sebuah kelas baru dengan nama mahasiswa. Kelas ini nantinya akan berisi method yang akan meng-overriding method di kelas pengguna. Jika Anda sudah menambahkan kelas Mahasiswa, silakan masukan kode program berikut:

package ac.id.umtas.pti.overriding;

public class Mahasiswa extends Pengguna{
    @Override
    public boolean login(String username, String password)
    {
        if (username.equalsIgnoreCase("mahasiswa"))
        {
            return password.equals("123");
        }else 
        {
            return false;
        }
    }
}

Dapat Anda perhatikan bahwa pada kelas Mahasiswa, username dan password-nya berbeda dengan kelas pengguna. Pada kelas Mahasiswa, username yang ditentukan adalah “mahasiswa” dan passwordnya adalah “123”.

Pembuktian Overriding

Berikutnya, kita akan praktekan bahwa Overriding memang bekerja seperti teori yang dijanjikan. Mari kita kembali ke frame utama, kemudian berikan aksi pada tombol login dengan cara klik kanan di tombol login > Events > Action > actionPerformed atau Anda juga bisa double click pada tombol tersebut.

Berikutnya, masukan kode program berikut

    private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        String username = tfUsername.getText();
        String password = tfPassword.getText();
        
        Mahasiswa p =new Mahasiswa();
        
        if (p.login(username, password))
        {
            labelStatus.setText("Berhasil Login");
        }else 
        {
            labelStatus.setText("Gagal Login");
        }
    }

Selanjutnya, silakan untuk jalankan aplikasi. Anda dapat mencoba memasukan username “Mahasiswa” dan password “123”. Ketika Anda menginputkan nilai tersebut, maka statusnya akan menjadi berhasil login. Hal tersebut menjadi bukti bahwa method login di kelas Mahasiswa telah meng-overriding method login pada kelas Pengguna.

Mencoba Overloading

Ok, setelah berhasil mencoba konsep Overriding berikutnya mari kita coba konsep Overloading. Kita masih melanjutkan kode sumber yang tadi, namun, mari kita sedikit tambahkan baris program pada kelas mahasiswa. Sehingga kelas mahasiswa akan berbentuk seperti berikut

package ac.id.umtas.pti.overriding;

public class Mahasiswa extends Pengguna{
    @Override
    public boolean login(String username, String password)
    {
        if (username.equalsIgnoreCase("mahasiswa"))
        {
            return password.equals("123");
        }else 
        {
            return false;
        }
    }
    
    public boolean login(String username, String password, int jenis_pengguna)
    {
        if (username.equalsIgnoreCase("mahasiswa"))
        {
            return password.equals("123456789");
        }else 
        {
            return false;
        }
    }
}

Untuk merasakan efek dari overloading, mari kita ubah sedikit kode program yang ada pada method btnLoginActionPerformed di MainFrame, sehingga menjadi seperti berikut ini

    private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        String username = tfUsername.getText();
        String password = tfPassword.getText();
        
        Mahasiswa p =new Mahasiswa();
        
        if (p.login(username, password,1))
        {
            labelStatus.setText("Berhasil Login");
        }else 
        {
            labelStatus.setText("Gagal Login");
        }
    } 

Pada kode sumber diatas, sebetulnya saya hanya menambahkan satu paramter tambahan saja pada pemanggilan method login. Nah, dengan penambahan satu parameter tersebut otomatis method pada kelas mahasiwa yang dipanggilnya juga akan berbeda. Ketika dijalankan maka tampilannya akan seperti berikut

About the Author

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

You may also like these

Mulai Chat
Butuh Bantuan?
Hi, selamat datang di Prilude Academy. Ada yang bisa kami bantu?

Kami siap membantu Anda pada jam kerja :)