Tipe class mana yang final dan dapat diextend

Inheritance atau Pewarisan/Penurunan adalah konsep pemrograman dimana sebuah class dapat ‘menurunkan’ property dan method yang dimilikinya kepada class lain. Konsep inheritance digunakan untuk memanfaatkan fitur ‘code reuse’ untuk menghindari duplikasi kode program.

Konsep inheritance membuat sebuah struktur atau ‘hierarchy’ class dalam kode program. Class yang akan ‘diturunkan’ bisa disebut sebagai class induk (parent class), super class, atau base class. Sedangkan class yang ‘menerima penurunan’ bisa disebut sebagai class anak (child class), sub class, derived class atauheir class.

Tidak semua property dan method dari class induk akan diturunkan. Property dan method dengan hak akses private, tidak akan diturunkan kepada class anak. Hanya property dan method dengan hak akses protected dan public saja yang bisa diakses dari class anak.

uatu class yang mempunyai class turunan dinamakan parent class atau base class. Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class. Suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class.

Karena suatu subclass dapat mewarisi apa apa yang dipunyai oleh parent class-nya, maka member dari suatu subclass adalah terdiri dari apa-apa yang ia punyai dan juga apa-apa yang ia warisi dari class parent-nya.

Kesimpulannya, boleh dikatakan bahwa suatu subclass adalah tidak lain hanya memperluas (extend) parent class-nya.

Dari hirarki diatas dapat dilihat bahwa, semakin kebawah, class akan semakin bersifat spesifik. Class mamalia memiliki seluruh sifat yang dimiliki oleh binatang, demikian halnya juga macan , kucing, Paus dan Monyet memiliki seluruh sifat yang diturunkan dari class mamalia.

Dengan konsep ini, karakteristik yang dimiliki oleh class binatang cukup didefinisikan didefinisikan dalam class binatang saja.

Class mamalia tidak perlu mendefinisikan ulang apa yang telah dimiliki oleh class binatang, karena sebagai class turunannya, ia akan mendapatkan karakteristik dari class binatang secara otomatis. Demikian juga dengan class macan, kucing, Paus dan monyet, hanya perlu mendefinisikan karakteristik yang spesifik dimiliki oleh class-nya masing-masing.

Dengan memanfaatkan konsep pewarisan ini dalam pemrograman, maka hanya perlu mendefinisikan karakteristik yang lebih umum akan didapatkan dari class darimana ia diturunkan.

KEUNTUNGAN INHERITANCE

1. Subclass menyediakan state/behaviour yang spesifik yang membedakannya dengan superclass, hal ini akan memungkinkan programmer Java untuk menggunakan ulang source code dari superclass yang telah ada.

2. Programmer Java dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class, untuk mendefinisikan class dengan behaviour dan state secara umum.

ISTILAH INHERITANCE

Extends
Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass.

Superclass Superclass digunakan untuk menunjukkan hirarki class yang berarti class dasar dari subclass/class anak.

Subclass Subclass adalah class anak atau turunan secara hirarki dari superclass.

Super Keyword ini digunakan untuk memanggil konstruktor dari superclass atau menjadi variabel yang mengacu pada superclass.

Methode Overriding Pendefinisian ulang method yang sama pada subclass

Dalam inheritance, method overriding berbeda dengan method overloading. Kalau method overriding adalah mendefinisikan kembali method yang sama, baik nama method maupun signature atau parameter yang diperlukan dalam subclass, kalau method overloading adalah mendefinisikan method yang memiliki nama yang sama, tetapi dengan signature yang berbeda dalam definisi class yang sama.

Kita baru perlu menerapkan inheritance pada saat kita jumpai ada suatu class
yang dapat diperluas dari class lain.

Misal terdapat class Pegawai public class Pegawai { public String nama; public double gaji; } Misal terdapat class Manager public class Manajer { public String nama; public double gaji; public String departemen; }

Dari 2 buah class diatas, kita lihat class Manajer mempunyai data member yang identik sama dengan class Pegawai, hanya saja ada tambahan data member departemen.

Sebenarnya yang terjadi disana adalah class Manajer merupakan perluasan dari class Pegawai dengan tambahan data member departemen.

Disini perlu memakai konsep inheritance, sehingga class Manajer dapat kita tuliskan seperti berikut :

public class Manajer extends Pegawai { public String departemen; }

 Pertanyaan   Keyword mana yang memiliki fungsi sama dengan keyword this dan menyediakan reference ke atribut turunan dari objek?

 tidak ada jawaban yang benar
 Pewarisan dan Polimorphism, Pertanyaan ke 2

 Pertanyaan   Berdasarkan kode diatas, yang diletakkan dalam (file terpisah. Method-method mana yang legal, jika diletakkan pada baris ke-2 class Test2 ?

 float aMethod(float a, float b){}

 public int aMethod(int a, int b) throws Exception {}

 public float aMethod(float a, float b) throws Exception {}

 public float aMethod(float p, float q){}

 tidak ada jawaban yang benar
 Pewarisan dan Polimorphism, Pertanyaan ke 3

 Pertanyaan   Modifikasi apa yang bisa Anda berikan minimal pada kode diatas sehingga kode tersebut dapat di-complie dengan benar?

 Pada baris pertama, hilangkan modifier final

 Pada baris ke-6 hilangkan modifier final

 Pada baris 1 dan 6 hilangkan modifier final

 Kode diatas sudah dapat decompile, tidak perlu ada modifikasi lagi  Pewarisan dan Polimorphism, Pertanyaan ke 4

 Pertanyaan   Perhatikan kode berikut. Bagaimana Anda dapat memanggil konstruktor Base yang akan mencetak string ”base constructor”

 Letakkan Base(10) pada //One

 Letakkan super(10) pada //One

 Letakkan super(10) pada //Two

 Letakkan super(10) pada //Three

 tidak ada jawaban yang benar
 Pewarisan dan Polimorphism, Pertanyaan ke 5

 Pertanyaan   Apa yang terjadi jika Anda meng-compile dan menjalankan kode berikut ?

 Compile dan jalankan tanpa error

 Terjadi exception pada saat compile

 tidak ada jawaban yang benar
 Pewarisan dan Polimorphism, Pertanyaan ke 6

 Pertanyaan   Diantara pernyataan-pernyataan berikut ini manakah yang benar?

 Sebuah program java tidak harus memiliki statement package

 Jika terdapat statement package maka ia tidak harus menjadi statement yang pertama pada program

 Jika program java mendefinisikan statement package dan import, maka statement import harus didefinisikan setelah statement package

 Sebuah file java berisi statement tanpa adanya class atau interface dapat di-compile.

 Jika ada statement import, maka ia harus didefinisikan sebelum pendefinisian class atau interface  Pewarisan dan Polimorphism, Pertanyaan ke 7

 Pertanyaan   Keyword mana yang mengindikasikan bahwa suatu class tidak akan memiliki instance yang dibuat dari tipe kelas ini?

 tidak ada jawaban yang benar
 Pewarisan dan Polimorphism, Pertanyaan ke 8

 Pertanyaan   Dari pernyataan-pernyataan berikut ini, manakah yang benar?

 Sebuah abstract class tidak dapat memiliki sub-class

 Sebuah final class, harus memiliki sub class, sebelum class final tersebut dapat digunakan

 Sebuah method static hanya dapat dipanggil melalui pembuatan instance dari class tersebut

 Sebuah method static tidak dapat diakses oleh method non static dalam class tersebut

 Sebuah modifier abstract dapat dideklarasikan sebelum pendeklarasian class atau method, tetapi tidak dapat dideklarasikan sebelum pendeklarasian variable  Pewarisan dan Polimorphism, Pertanyaan ke 9

 Pertanyaan   Perhatikan hirarkhi inheritance di atas. Dari pernyataan - pernyataan berikut ini manakah yang benar? 2. Dog rover, fido; 3. Animal anim; 4. rover = new Dog(); 5. Cat cathy=new Mammal(); 6. anim = rover;

7. fido = (Dog)anim;

 Baris ke-5 tidak akan bisa di-compile

 Baris ke-6 tidak akan bisa di-compile

 Kode diatas dapat decompile akan tetapi ia akan melempar exception pada baris ke-6

 Kode akan di-compile dan dijalankan

 Kode akan decompile dan dijalankan, tetapi casting pada baris ke -7 sebenarnya tidak diperlukan dan dapat dihilangkan  Pewarisan dan Polimorphism, Pertanyaan ke 10

 Pertanyaan   Pernyataan mana yang benar ketika keyword final diaplikasikan ke method?

 Method dilindungi dari proses override oleh subclass

 Keyword final harus digunakan dengan class abstract

 Keyword final tidak dapat digunakan dengan method abstract.

 Method dilindungi dari penggunaan di dalam superclass

 tidak ada jawaban yang benar
 Pewarisan dan Polimorphism, Pertanyaan ke 1

 Pertanyaan   Tipe class mana yang final dan dapat diextend?

 Tidak ada jawaban benar  Pewarisan dan Polimorphism, Pertanyaan ke 4

 Pertanyaan   Method mana yang dapat disisipkan pada comment // method disini?

 void amethod(int i) throws Exception {}

 void amethod(long i)throws Exception {}

 public void amethod(int i) throws Exception {}

 tidak ada jawaban yang benar
 Pewarisan dan Polimorphism, Pertanyaan ke 5

 Pertanyaan   Variabel mana yang dapat direferencekan pada comment //variable disini?

 E  Pewarisan dan Polimorphism, Pertanyaan ke 6

 Pertanyaan   Apa yang menjadi output potongan kode diatas?

 tidak ada jawaban yang benar
 Pewarisan dan Polimorphism, Pertanyaan ke 7

 Pertanyaan   Apa yang menjadi output potongan kode diatas?

 Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

 Error karena constructor Bapak(String nama) tidak pernah dipanggil

 Error karena constructor Bapak() tidak pernah dipanggil

 Output :
Anak  Pewarisan dan Polimorphism, Pertanyaan ke 8

Video yang berhubungan

Postingan terbaru

LIHAT SEMUA