PEWARISAN (INHERITANCE): DASAR DAN
IMPLEMENTASI
BAB I
MATERI SINGKAT
A. Pengertian Inheritance
Inheritance adalah konsep dalam pemrograman berorientasi objek yang memungkinkan
sebuah class mewarisi atribut dan method dari class lain. Class yang mewariskan disebut parent
class, sedangkan class yang menerima warisan disebut subclass. Dengan inheritance, pembuatan
program menjadi lebih efisien karena kode dapat digunakan kembali.
B. Konsep Dasar Inheritance
Subclass merupakan pengembangan dari parent class. Subclass dapat menggunakan atribut
dan method milik parent class serta menambahkan atribut atau method baru. Dalam Java,
inheritance dideklarasikan menggunakan kRectangleata kunci extends.
C. Jenis Inheritance
Java mendukung single inheritance, yaitu satu subclass hanya memiliki satu parent class.
Selain itu, Java juga mendukung multilevel inheritance, di mana sebuah subclass dapat memiliki
subclass lagi secara bertingkat.
D. Pewarisan Atribut dan Method
Subclass mewarisi atribut dan method dari parent class kecuali yang bersifat private. Atribut
dan method yang diwariskan dapat langsung digunakan oleh subclass tanpa harus dideklarasikan
ulang.
E. Access Modifier dan super
Access modifier menentukan hak akses atribut dan method dalam inheritance. Kata kunci
super digunakan untuk mengakses atribut, method, atau konstruktor dari parent class. Konstruktor
parent class akan dijalankan terlebih dahulu sebelum konstruktor subclass.
BAB II
TUGAS PENDAHULUAN
Pertanyaan
1. Apa yang dimaksud dengan inheritance?
2. Buatlah contoh kasus yang menerapkan konsep inheritance !
3. Adakah perbedaan cara mengakses member class milik parent dan member class
milik sendiri? Jelaskan melalui contoh ! (Silahkan memanfaatkan jawaban soal
nomor 2.)
4. Apa yang dimaksud dengan konsep single inheritance ?
5. Apa yang dimaksud dengan konsep multi level inheritance ?
6. Ada berapa modifier untuk pengontrolan akses? Jelaskan masing-masing!
7. Apakah kegunaan kata kunci super? Jelaskan !
8. Apakah yang dimaksud dengan konstruktor tidak diwariskan?
Jawaban
1. Inheritance adalah konsep dalam pemrograman berorientasi objek yang memungkinkan
sebuah class mewarisi atribut dan method dari class lain.
2. Dalam sebuah sistem perusahaan, terdapat data pegawai yang memiliki atribut nama dan
gaji. Untuk pegawai dengan jabatan manajer, diperlukan atribut tambahan berupa
departemen. Oleh karena itu dibuat class Pegawai sebagai parent class dan class Manajer
sebagai subclass yang mewarisi atribut nama dan gaji, serta menambahkan atribut
departemen. Dengan konsep inheritance, penulisan kode menjadi lebih efisien karena atribut
yang sama tidak perlu dibuat ulang.
3. Ada, terdapat perbedaan cara mengakses member class milik parent dan member
class milik sendiri, terutama saat nama atribut atau method sama.
Penjelasan + Contoh
Pada konsep inheritance, member milik parent class dapat langsung diakses oleh subclass
selama tidak bersifat private. Namun, jika subclass memiliki member dengan nama yang
sama, maka untuk mengakses member milik parent class harus menggunakan kata kunci
super, sedangkan member milik sendiri diakses secara langsung atau menggunakan this.
Pada contoh di atas, [Link] digunakan untuk mengakses member milik class Manajer,
sedangkan [Link] digunakan untuk mengakses member milik class Pegawai. Hal ini
menunjukkan bahwa cara mengakses member parent class dan member class sendiri
berbeda ketika terjadi penamaan yang sama.
4. Single inheritance adalah konsep pewarisan dalam pemrograman berorientasi objek di
mana satu subclass hanya dapat memiliki satu parent class. Dengan konsep ini, sebuah
class turunan hanya mewarisi atribut dan method dari satu class induk sehingga struktur
program menjadi lebih sederhana dan mudah dipahami.
5. Multi level inheritance adalah konsep pewarisan dalam pemrograman berorientasi objek di
mana sebuah subclass dapat menjadi parent bagi subclass lainnya. Dengan kata lain,
pewarisan terjadi secara bertingkat, sehingga atribut dan method dapat diwariskan dari
class paling atas ke class turunan berikutnya.
6. Terdapat 4 access modifier yang digunakan untuk mengontrol hak akses dalam
pemrograman berorientasi objek, yaitu:
1. public
Member dengan modifier public dapat diakses dari mana saja, baik dari class yang
sama, subclass, maupun class lain.
2. protected
Member dengan modifier protected dapat diakses oleh subclass dan oleh class lain yang
masih berada dalam satu package.
3. default (tanpa modifier)
Jika tidak dituliskan modifier, maka member hanya dapat diakses oleh class yang
berada dalam satu package.
4. Private
Member dengan modifier private hanya dapat diakses di dalam class itu sendiri dan
tidak dapat diwariskan ke subclass.
7. Kata kunci super digunakan untuk mengakses member milik parent class dari dalam
subclass. Kata kunci ini berguna ketika subclass ingin menggunakan atau membedakan
member yang dimiliki parent class dengan member miliknya sendiri.
Kegunaan super antara lain:
1. Mengakses atribut parent class
2. Memanggil method parent class
3. Memanggil konstruktor parent class
Dengan menggunakan super, subclass dapat menghindari konflik nama dan memastikan
bahwa member yang diakses berasal dari parent class.
8. Yang dimaksud dengan konstruktor tidak diwariskan adalah bahwa konstruktor pada
parent class tidak secara langsung dimiliki oleh subclass. Artinya, subclass tidak dapat
menggunakan konstruktor parent class seolah-olah konstruktor tersebut adalah miliknya
sendiri. Namun, konstruktor parent class tetap dijalankan terlebih dahulu saat objek
subclass dibuat, dan pemanggilannya dilakukan menggunakan kata kunci super() di dalam
konstruktor subclass.
BAB III
TUGAS PRAKTIKUM
Tugas 1
A. Struktur Directory
TugasUML/
├── src/
│ ├── perbankan
│ │ ├── [Link]
│ │ └── [Link]
│ └── [Link]
B. Program
[Link]
package perbankan;
public class Tabungan {
// Buat field
protected int saldo;
// Buat konstruktor
public Tabungan(int saldo){
[Link] = saldo;
// Getter untuk mengambil nilai nilai saldo
public int getSaldo(){
return saldo;
}
[Link]
package perbankan;
public class PengambilanUang extends Tabungan{
// Buat field
protected int proteksi;
protected int jumlah;
// Konstruktor
public PengambilanUang(int saldo, int proteksi){
super(saldo);
[Link] = proteksi;
// Getter untuk mengambil nilai proteksi
public int getProteksi(){
return proteksi;
// Setter untuk mengatur jumlah uang yang akan diambil
public void setJumlah(int jumlah){
[Link] = jumlah;
// Getter untuk mengambil nilai jumlah uang yang akan diambil
public int getJumlah(){
return jumlah;
}
// Method untuk memvalidasi dan memproses pengambilan uang
public boolean ambilUang(){
if(saldo - jumlah >= proteksi){
saldo -= jumlah;
return true;
} else {
return false;
[Link]
import perbankan.*;
public class Main {
public static void main(String[] args) {
PengambilanUang tabungan = new PengambilanUang(5000, 1000);
[Link]("Uang yang ditabung : " + [Link]());
[Link]("Uang yang diproteksi : " + [Link]());
[Link](4500);
[Link]("-----------------------------");
[Link]("Uang yang akan diambil : " + [Link]() + " "
+[Link]());
[Link]("Saldo sekarang : " + [Link]());
[Link](2500);
[Link]("-----------------------------");
[Link]("Uang yang akan diambil : " + [Link]() + " " +
[Link]());
[Link]("Saldo sekarang : " + [Link]());
C. Analisis
Berdasarkan hasil implementasi program, dapat dianalisa sebagai berikut:
1. Penerapan Inheritance
Class PengambilanUang mewarisi atribut dan method dari class Tabungan menggunakan
keyword extends. Hal ini memudahkan pengelolaan data saldo tanpa perlu mendefinisikan
ulang pada class turunan.
2. Penggunaan Constructor (super())
Constructor pada class PengambilanUang memanggil constructor parent menggunakan
super(saldo) untuk menginisialisasi atribut saldo. Hal ini memastikan bahwa data pada class
induk terinisialisasi dengan benar.
3. Penggunaan Package dan Import
Class dikelompokkan ke dalam package perbankan untuk meningkatkan kerapihan dan
modularitas program. Keyword import perbankan.*; digunakan agar class pada package
tersebut dapat diakses oleh class pengujian.
[Link] Method ambilUang()
Method ambilUang() menggunakan parameter jumlah karena nilai tersebut bersifat
sementara (transaksi), bukan atribut tetap dari tabungan. Pendekatan ini lebih sesuai dengan
konsep OOP dan menghindari penyimpanan data yang tidak diperlukan.
5. Penggunaan Getter
Atribut tidak diakses secara langsung, melainkan melalui method getter (getSaldo() dan
getProteksi()), sehingga prinsip encapsulation tetap terjaga.
Tugas 2