Lompat ke konten Lompat ke sidebar Lompat ke footer

Method Class Derived Java dan Fungsinya

Pada Java, akan ditampilkan compiler error jika memberikan banyak batasan akses menuju sebuah fungsi class derived yang overriding ke sebuah fungsi base class. Contohnya, jika terdapat sebuah fungsi public void foo() dalam base class dan jika hal itu overriding dalam derived class, maka akses spesifikasi foo() tidak dapat menjadi apapun ketimbang public pada derived class. Jika foo() adalah fungsi private pada base class, maka spesifikasi akses untuk class tersebut dapat berupa apapun dalam derived class.


Sebelum lebih lanjut mempelajari materi tentag Method Class Derived Java dan Fungsinya, terlebih dahulu pelajari materi tentang: Menggunakan Final Inheritance Java dan Fungsinya, Mengakses Anggota Grandparent Java Menggunakan Keyword Super, dan Method Private Overriding Java dan Fungsinya.

Dalam pemrograman berorientasi objek, konsep pewarisan (inheritance) memungkinkan sebuah kelas untuk mewarisi atribut dan metode dari kelas lainnya. Dalam Java, sebuah kelas yang mewarisi sifat dari kelas lain disebut kelas turunan atau derived class. Method class derived adalah metode yang ada dalam kelas turunan yang dapat memberikan perilaku tambahan atau mengganti perilaku yang sudah ada dari kelas induk (superclass). Mari telusuri lebih dalam tentang konsep ini.

Pengertian Method Class Derived

Method class derived adalah metode yang didefinisikan dalam kelas turunan dan dapat diakses oleh objek dari kelas tersebut. Metode ini dapat memiliki perilaku yang sama dengan metode yang diwarisi dari kelas induk, atau dapat memiliki perilaku yang berbeda sesuai dengan kebutuhan kelas turunan. Dalam Java, metode dalam kelas turunan dapat meng-overriding metode yang ada dalam kelas induk, sehingga memberikan fleksibilitas dalam perilaku objek.

Cara Implementasi Method Class Derived

Implementasi method class derived mirip dengan implementasi metode dalam kelas biasa. Pengembang mendefinisikan metode di dalam kelas turunan dengan memberikan nama, tipe kembalian, dan parameter yang sesuai dengan kebutuhan kelas tersebut. Jika ingin meng-overriding metode yang sudah ada dalam kelas induk, pengembang hanya perlu mendeklarasikan metode dengan nama, tipe kembalian, dan parameter yang sama dalam kelas turunan.

Contoh:

class Parent {


void display() {

System.out.println(

"Parent's display()");}

}


class Child extends 

Parent {

void display() {

System.out.println(

"Child's display()");}


void additionalMethod() {

System.out.println(

"Additional method in Child class");}

}


public class Main {

public static void 

main(String[] args) {

Child obj = new Child();


// Memanggil metode

// display() dari kelas Child.

obj.display(); 


// Memanggil metode

// additionalMethod()

// dari kelas Child.

obj.additionalMethod(); }

}

Dalam contoh di atas, kelas Child merupakan kelas turunan dari Parent, dan metode display() di-overriding untuk memberikan perilaku yang berbeda. Selain itu, kelas Child juga memiliki metode tambahan additionalMethod() yang tidak ada dalam kelas Parent.

Perhatikan dua contoh program berikut. Program 1 gagal dalam kompilasi dan Program 2 dapat dikompilasi secara sempurna.

Contoh: Program 1.

/* file name: Main.java */

class Base

public void foo() 

{System.out.println("Base");} 

 

class Derived extends Base 

/* kompilator error */

private void foo() 

{System.out.println("Derived");} 

 

public class Main

public static void main(String args[]

{Derived d = new Derived(); 

d.foo();} 

}

Output:
Derived

Baca Juga:
Contoh: Program 2.

/* file name: Main.java */

class Base

private void foo() 

{ System.out.println("Base"); } 

 

class Derived extends Base 

/* program dapat berjalan sempurna */

public void foo() 

{System.out.println("Derived");} 

 

public class Main

public static void main(String args[]

{Derived d = new Derived(); 

d.foo();} 

}

Output:
Derived

Method class derived memiliki beberapa fungsi penting dalam pemrograman berorientasi objek:
  • Penggantian Perilaku: Metode dalam kelas turunan dapat menggantikan perilaku metode yang diwarisi dari kelas induk. Hal ini memungkinkan kelas turunan untuk menyesuaikan atau memperluas fungsionalitas yang sudah ada.
  • Penambahan Fungsionalitas: Selain meng-overriding metode yang sudah ada, kelas turunan juga dapat menambahkan metode baru sesuai dengan kebutuhan. Ini memungkinkan untuk menyediakan fungsionalitas tambahan yang unik untuk kelas tersebut.
  • Penggunaan Polimorfisme: Method class derived memungkinkan penggunaan polimorfisme, di mana objek dari kelas turunan dapat diakses melalui referensi kelas induk. Ini memfasilitasi fleksibilitas dalam pemrograman dan memungkinkan untuk menangani objek secara umum.
  • Reusable Code: Dengan menggunakan pewarisan dan method class derived, pengembang dapat memanfaatkan kembali kode yang sudah ada dalam kelas induk. Hal ini memungkinkan untuk menghindari duplikasi kode yang tidak perlu, sehingga meningkatkan efisiensi dan keterbacaan kode.
  • Struktur Hierarki yang Terorganisir: Dengan menggunakan konsep pewarisan, pengembang dapat mengatur kelas-kelas ke dalam struktur hierarki yang terorganisir dan mudah dimengerti. Ini memungkinkan untuk membagi kode menjadi bagian-bagian yang lebih kecil dan terkelompok, sehingga mempermudah pemeliharaan dan pengembangan aplikasi.
  • Polimorfisme: Salah satu keuntungan utama dari penggunaan method class derived adalah kemampuan untuk menggunakan polimorfisme. Polimorfisme memungkinkan untuk memperlakukan objek dari kelas turunan sebagai objek dari kelas induk, sehingga memberikan fleksibilitas dalam penggunaan dan penanganan objek.
  • Kelas Abstrak: Method class derived juga memungkinkan untuk mendefinisikan kelas abstrak, yaitu kelas yang tidak dapat diinstansiasi secara langsung tetapi dapat digunakan sebagai kerangka kerja untuk kelas-kelas turunan. Ini berguna ketika ingin mendefinisikan perilaku umum yang harus diimplementasikan oleh kelas-kelas turunan.
  • Refaktorisasi Kode: Dengan menggunakan method class derived, pengembang dapat dengan mudah melakukan refaktorisasi kode. Refaktorisasi adalah proses mengubah struktur internal dari kode tanpa mengubah perilaku fungsionalnya. Dengan memanfaatkan kelas turunan, pengembang dapat membagi kode ke dalam unit-unit yang lebih kecil dan lebih mudah dikelola.
  • Pengujian yang Lebih Mudah: Dengan memanfaatkan pewarisan dan method class derived, pengembang dapat memisahkan logika bisnis dari detail implementasi. Ini memungkinkan untuk melakukan pengujian dengan lebih mudah, karena dapat membuat kelas turunan palsu (mock) untuk menggantikan kelas-kelas yang bergantung pada kelas yang sebenarnya.

Meskipun method class derived memiliki banyak keuntungan, ada juga beberapa kekurangan yang perlu dipertimbangkan:
  • Ketergantungan pada Hierarki Warisan: Penggunaan pewarisan dan method class derived dapat membuat hierarki kelas menjadi kompleks dan sulit dipahami jika tidak dikelola dengan baik. Ketika terlalu banyak kelas turunan ditambahkan, dapat sulit untuk melacak hubungan antara kelas-kelas tersebut, yang dapat mengakibatkan kesulitan dalam pemeliharaan dan pemahaman kode.
  • Masalah Hierarki: Hierarki warisan yang terlalu dalam atau terlalu kompleks dapat menyebabkan masalah seperti "masalah diamond" di mana sebuah kelas memiliki lebih dari satu kelas induk langsung yang memiliki metode dengan nama yang sama. Ini dapat menyebabkan kebingungan dan konflik dalam pemilihan metode yang tepat untuk dipanggil.
  • Keterbatasan Fleksibilitas: Meskipun pewarisan dapat memberikan fleksibilitas dalam desain, terlalu banyak ketergantungan pada hierarki warisan dapat mengurangi fleksibilitas dalam pengembangan. Perubahan pada kelas induk dapat mempengaruhi banyak kelas turunan, yang mungkin memerlukan perubahan besar-besaran dalam kode.
  • Kompromi Terhadap Kapsulasi: Penggunaan method class derived dapat mengganggu prinsip kapsulasi, terutama jika metode-metode dalam kelas induk tidak di-design dengan baik. Kelas turunan dapat memiliki akses langsung ke detail implementasi kelas induk, yang dapat menyebabkan ketergantungan yang tidak diinginkan antara kelas-kelas tersebut.
  • Kesulitan Pemahaman: Hierarki kelas yang terlalu dalam atau kompleks dapat menyebabkan kesulitan dalam pemahaman dan dokumentasi kode. Pengembang baru mungkin memerlukan waktu ekstra untuk memahami hubungan antara kelas-kelas dan perilaku yang diwarisi.
  • Overhead Penanganan Polimorfisme: Penggunaan polimorfisme dalam method class derived dapat menyebabkan overhead dalam penanganan objek. Ketika objek harus diproses dalam konteks kelas-kelas yang berbeda, hal ini dapat menambah kompleksitas dan biaya eksekusi.

Penting untuk mempertimbangkan baik keuntungan maupun kerugian ketika menggunakan method class derived dalam desain perangkat lunak. Dengan pemahaman yang baik tentang kebutuhan aplikasi dan prinsip-prinsip desain yang baik, pengembang dapat meminimalkan dampak negatif dan memaksimalkan manfaat dari penggunaan method class derived.

Kesimpulan

Method class derived adalah metode yang didefinisikan dalam kelas turunan dan dapat memberikan perilaku tambahan atau mengganti perilaku yang sudah ada dari kelas induk. Dengan kemampuan untuk meng-overriding metode yang sudah ada dan menambahkan metode baru, method class derived memberikan fleksibilitas dalam desain dan implementasi kelas dalam hierarki warisan. Ini adalah salah satu konsep penting dalam pemrograman berorientasi objek yang membantu dalam pembangunan aplikasi yang mantap dan mudah dipelihara.

Referensi Tambahan:

Artikel ini didedikasikan kepada: Elian Anindia Permatasari, Farisa Nur Rizkika, Gega Agli Dutatama, Herawati Mega, dan Ilham Bashairil Alam.

5 komentar untuk "Method Class Derived Java dan Fungsinya"

  1. Apakah mungkin untuk menyembunyikan atau menurunkan tingkat akses ke method yang inheritance pada Java?

    BalasHapus
    Balasan
    1. Ketika melakukan override method, maka hanya bisa dilakukan dalam tipe public, bukan pada tipe private.

      Hapus
    2. Konsep inheritance dapat bekerja karena program dapat menggunakan base class, dimana subclassnya juga dapat digunakan. Behavior-nya mungkin berbeda, tetapi API tidak. Konsep tersebut dikenal dengan istilah Liskov substitusi.

      Jika dapat dilakukan pembatasan akses ke suatu method, maka class yang dihasilkan tidak akan memiliki API yang sama dan juga tidak dapat digunakan override instance base class untuk salah satu class turunan, dan sudah pasti hal tersebut akan meniadakan keuntungan dari konsep inheritance pada Java.

      Hapus
    3. Mungkin saja, tetapi membutuhkan sedikit manipulasi package dan dapat mengarah pada struktur yang sedikit lebih kompleks daripada yang ingin dikerjakan dalam kepentingan jangka panjang.

      Hapus
    4. apalah susahnya hanya mengganti tipe private ke tipe public, jangan suka mempersulit diri sendiri. :D

      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 -