Lompat ke konten Lompat ke sidebar Lompat ke footer

Overloading dan Inheritance Java dan Fungsinya

Overloading tidak bekerja untuk derived class dalam bahasa pemrograman C++. Tidak terdapat overloading resolusi antara base dan derived, dimana kompilator akan melihat ke dalam scope dari derived, dan mencari fungsi tunggal "double f(double)" yang kemudian akan memanggilnya. Pemanggilan tersebut tidak akan terganggu dengan (enclosingscope dari Base. Pada C++, tidak terdapat overloading antara scope-scope derived class dan bukan exception yang menuju aturan umum.


Sebelum lebih lanjut mempelajari materi tentang Overloading dan Inheritance Java dan Fungsinya, terlebih dahulu pelajari materi tentang: Parent dan Child Class Java Dengan Anggota Data Sama, Object Serialisasi Java Terhadap Inheritance, dan Object Subclass dan Subclass Java Dan Referensi Superclass.

Dalam pemrograman berorientasi objek, Java menawarkan dua konsep penting yang memungkinkan pengembangan aplikasi yang efisien dan fleksibel: Overloading dan Inheritance. Keduanya memiliki peran yang berbeda namun saling melengkapi untuk memungkinkan pengembang membuat kode yang lebih terstruktur dan mudah dipelihara.

Overloading

Overloading adalah teknik di mana sebuah kelas dapat memiliki beberapa metode dengan nama yang sama, tetapi dengan parameter yang berbeda. Dalam Java, metode yang di-overload harus memiliki nama yang sama tetapi berbeda dalam satu atau lebih dari:
  • Jumlah parameter
  • Tipe parameter
  • Urutan tipe parameter

Contoh:

class Calculator {

public int add(int a, int b

{return a + b;}


public double add(double a,

double b

{return a + b;}

}

Pada contoh yang diperlihatkan sebelumnya, terdapat dua metode add(). Yang pertama menerima dua parameter integer, sedangkan yang kedua menerima dua parameter double. Keduanya memiliki nama yang sama (add), tetapi berbeda dalam tipe parameter, memungkinkan untuk melakukan penambahan baik untuk integer maupun double.

Inheritance

Inheritance (Pewarisan) adalah konsep di mana sebuah kelas dapat mewarisi properti dan metode dari kelas lain. Kelas yang mewarisi disebut kelas anak atau subclass, sedangkan kelas yang diwarisi disebut kelas induk atau superclass. Kelas anak dapat mengakses metode dan variabel kelas induk, dan juga dapat menambahkan metode dan variabel tambahan.

Contoh:

class Animal {

void eat() {

System.out.println(

"Animal is eating...");}

}


class Dog extends Animal {

void bark() {

System.out.println(

"Dog is barking...");}

}

Berdasarkan contoh yang diperlihatkan sebelumnya, kelas Dog mewarisi metode eat() dari kelas Animal. Selain itu, Dog memiliki metode tambahan bark().

Berikut akan dijelaskan kondisi dimana jika dimiliki fungsi pada base class dan sebuah fungsi dengan nama sama dalam derived class, maka kondisinya akan diperlihatkan pada program berikut.

Contoh:

#include <iostream>

using namespace std;

class Base

{

public:

int f(int i)

{

cout << "f(int): ";

return i+3;

}

};

 

 

class Derived : public Base

{

public:

double f(double d)

{

cout << "f(double): ";

return d+3.3;

}

};

 

 

int main()

{

Derived* dp = new Derived;

cout << dp->f(3) << '\n';

cout << dp->f(3.3) << '\n';

delete dp;

return 0;

}

Hasil output dari kode program tersebut adalah:
f(double): 6.3
f(double): 6.6

Ketimbang hasil output yang dikeluarkan adalah:
f(int): 6
f(double): 6.6

Baca Juga:
Contoh: Sekarang pertimbangkan hasil yang dikeluarkan menggunakan bahasa pemrograman Java.

class Base

{

public int f(int i)

{System.out.print("f (int): ");

return i+3;}

}

 

class Derived extends Base

{

public double f(double i)

{System.out.print("f (double) : ");

return i + 3.3;}

}

 

class myprogram3

{

public static void main(String args[])

{Derived obj = new Derived();

System.out.println(obj.f(3));

System.out.println(obj.f(3.3));}

}

Output:
f (int): 6
f (double): 6.6

Overloading Java dapat bekerja lintas scope yang berbeda dengan C++. Kompilator Javadapat menentukan versi yang tepat dari method overloading untuk dieksekusi pada saat waktu kompilasi berdasarkan tipe dari argumen yang digunakan untuk memanggil method dan parameter dari method overloading dari kedua class yang diterima nilainya, yang berasal dari argumen yang digunakan dalam pemanggilan dan eksekusi method overloading.

Tahap akhir, pertimbangkan hasil output yang dihasilkan dari program C# berikut ini:

Contoh:

using System;     

 

class Base

{

public int f(int i)

{Console.Write("f (int): ");

return i + 3;}

}

 

class Derived : Base

{

public double f(double i)

{Console.Write("f (double) : ");

return i+3.3;}

}

 

class MyProgram

{

 

static void Main(string[] args)

{

Derived obj = new Derived();

Console.WriteLine(obj.f(3));

Console.WriteLine(obj.f(3.3));

Console.ReadKey(); 

// tulis baris program ini

// jika menggunakan visual

// studio.

}

 

}

Catatan: Console.ReadKey() digunakan untuk menghentikan console. Hal ini sama seperti getch pada C/C++.

output dari program adalah:
f(double) : 6.3
f(double):  6.6

Ketimbang hasil output yang keluar adalah:
f(int) : 6
f(double) : 6.6

Alasan pada bagian program ini adalah sama seperti pada C++. Seperti halnya C++, tidak terdapat overloading antara Base class dan Derived class. Pada C#, tidak terdapat overloading antar scope, dan derived class bukanlah exception yang menuju ke aturan umum. Hal ini sama seperti C++ karena C# dirancang untuk lebih dekat ke C++.

Fungsi overloading dan inheritance:
  • Keterbacaan Kode: Overloading memungkinkan pengembang untuk menggunakan nama metode yang sama untuk operasi yang berbeda, membuat kode lebih mudah dipahami. Dalam hal ini, kode menjadi lebih intuitif karena operasi yang berbeda dapat diberi nama yang sama.
  • Reusabilitas Kode: Inheritance memungkinkan pengembang untuk menggunakan kembali kode yang ada dari kelas induk ke kelas anak. Ini mengurangi duplikasi kode dan mempromosikan praktik pengembangan yang efisien.
  • Peningkatan Fleksibilitas: Kombinasi dari overloading dan inheritance meningkatkan fleksibilitas kode. Dengan overloading, pengembang dapat menangani berbagai tipe data dengan nama metode yang sama. Sementara dengan inheritance, pengembang juga dapat memperluas fungsionalitas dari kelas yang ada dengan menambahkan perilaku tambahan di kelas anak.
  • Pengurangan Redundansi: Overloading memungkinkan untuk memiliki lebih sedikit metode dengan nama yang mirip, mengurangi kemungkinan kebingungan atau kesalahan dalam kode. Inheritance mengurangi duplikasi kode dengan memungkinkan kelas anak untuk menggunakan metode dan variabel yang sudah ada di kelas induk.

Dengan memahami konsep Overloading dan Inheritance dalam Java, pengembang dapat menciptakan kode yang lebih bersih, terstruktur, dan mudah dipelihara. Keduanya merupakan alat penting dalam pembangunan aplikasi Java yang efisien dan fleksibel.

Meskipun Overloading dan Inheritance memberikan banyak manfaat dalam pengembangan perangkat lunak Java, ada beberapa kekurangan yang perlu dipertimbangkan:
  • Kekurangan Overloading:
    • Keterbatasan dalam Resolusi Metode: Jika terlalu banyak metode di-overload dengan parameter yang sangat mirip, compiler mungkin mengalami kesulitan dalam menentukan metode mana yang harus dipanggil. Hal ini dapat menyebabkan ambiguitas dan kesulitan dalam pemeliharaan kode.
    • Peningkatan Kompleksitas: Terlalu banyak overloading pada suatu kelas dapat meningkatkan kompleksitas kode, membuatnya sulit dipahami dan dipelihara. Ini terutama terjadi jika metode yang di-overload memiliki nama yang sama tetapi perilaku yang sangat berbeda.
    • Kesulitan dalam Pemahaman: Overloading dapat menyebabkan kebingungan bagi pengembang baru atau pengembang lain yang harus memahami kode yang sudah ada. Terutama jika overloading digunakan secara berlebihan tanpa dokumentasi yang jelas.
  • Kekurangan Inheritance:
    • Peningkatan Ketergantungan: Penggunaan inheritance yang berlebihan dapat menyebabkan ketergantungan yang tinggi antara kelas-kelas. Ini membuat kode menjadi lebih rapuh dan sulit untuk dimodifikasi tanpa memengaruhi bagian lain dari sistem.
    • Risiko Kesalahan Perancangan: Jika hierarki pewarisan tidak dirancang dengan baik, dapat menyebabkan kesalahan perancangan yang sulit dideteksi. Perubahan di kelas induk dapat memiliki efek yang tidak diinginkan pada kelas anak, yang menyulitkan pemeliharaan dan pengembangan lanjutan.
    • Peningkatan Keterikatan: Inheritance mengikat kelas anak secara erat dengan kelas induknya. Ini berarti perubahan pada kelas induk dapat memengaruhi kelas anak, yang menyulitkan pengujian dan pengembangan terisolasi.
    • Keterbatasan dalam Polimorfisme: Meskipun inheritance memungkinkan polimorfisme, ketergantungan yang berlebihan pada hierarki kelas dapat mengurangi fleksibilitas dan menyulitkan untuk memperkenalkan perilaku baru atau mengubah perilaku yang ada.

Penting untuk mempertimbangkan kekurangan-kekurangan ini saat menggunakan Overloading dan Inheritance dalam pengembangan perangkat lunak. Menggunakan kedua konsep ini dengan bijaksana dapat membantu dalam menciptakan desain yang lebih kuat dan kode yang lebih mudah dipelihara.

Referensi Tambahan:

Artikel ini didedikasikan kepada: Ilham Bashairil Alam, Indah Nur Hastuti, Jacqualine Dwinaya Putri Jadmiko, Lailati Nur Amalina, dan Lusi Kristiana.

5 komentar untuk "Overloading dan Inheritance Java dan Fungsinya"

  1. Dalam hirarki inheritance pada Java, method superclass dan subclass dapat dilakukan overriding dan overloading. Ketika terjadi overloading, maka method superclass dan subclass akan memiliki nama yang sama tetapi dengan signature yang berbeda dari tipe parameternya.

    BalasHapus
  2. Overloading dan inheritance Java?

    BalasHapus
    Balasan
    1. Overloading memungkinkan beberapa definisi fungsi untuk nama yang sama, yang dibedakan terutama melalui argumen yang berbeda dan biasanya diselesaikan pada waktu kompilasi program. Inheritance memungkin subclass untuk menentukan versi yang lebih khusus dari fungsi yang sama tersebut dan biasanya diselesaikan pada waktu pemrosesan.

      Hapus
  3. Bisa dijelaskan apa yang dimaksud dengan overloading Java?

    BalasHapus
    Balasan
    1. Pada pemrograman Java, terdapat dua atau lebih method yang mungkin untuk memiliki method yang sama jika terdapat perbedaan pada bagian parameternya. Method tersebut disebut dengan method overloading.

      Hapus

Hubungi admin melalui Wa : +62-896-2414-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -