Anda di halaman 1dari 52

Inheritance &

Polymorphism
By Group 2
Welcome!!
Member and Class Modifier
Memahami tingkatan akses member dan
01
class

Inheritance
Kenapa Kita harus menggunakan inheritance?/ Contoh program Inheritance 02

Polymorphism
Public, Private, Protected 03
Our Team Layout
Class & Object

M. Agus Lesmana P. Agung M. Luthfi Vareza Joshua Christian

4182250004 4183250020 4183550002

Vincent Sirait Jufita Sari

4183550002 4183250012
Start
Member & Class
Modifer
MEMBER & CLASS MODIFIER MEMBERAgenda
& CLASS MODIFIER
Style
Class dalam program Java dapat saling berhubungan dengan cara
memberikan akses terhadap member mereka. Semua yang ada di
dalam class (atribut dan method) disebut member. Biasanya akan ada
tingkatan akses yang disebut modifier.
Perlu diingat:
Modifier tidak hanya bisa diberikan kepada member saja. Tapi juga bisa diberikan
kepada interface, enum, dan class itu sendiri.
Perhatikan Kode Program Berikut :

Yang digaris bawahi pada kode di atas adalah modifier. Modifier ini nanti akan menentukan batasan akses
member dan class.
Jenis Jenis Modifier dalam Java 3 MacamAgenda
Modifier dalam Java
Style
Secara umum ada 3 macam modifier yang digunakan dalam
Java: public, private, dan protected.

Perlu diingat:
Modifier tidak hanya bisa diberikan kepada member saja. Tapi juga bisa diberikan
kepada interface, enum, dan class itu sendiri.
Berikut ini tabel jangkauan untuk masing
-masing modifier:

Modifier Class Package Subclass World


Public Y Y Y Y
Protected Y Y Y N
No Modifier Y Y N N
Private Y N N N

Keterangan:
Y artinya bisa diakses;
N artinya tidak bisa diakses;
Subclass artinya class anak;
World artinya seluruh package di aplikasi.
Pada tabel diatas, apabila tidak
menggunakan modifier, maka class dan m
ember hanya akan bisa diakses dari Class itu
sendiri dan package (class yang berada satu
package dengannya).

Agar bisa diakses dari mana saja, maka kita


harus memberikan modifier public.
Mari kita lihat contohnya…
Modifier Public
Public Agenda Style
Modifier public akan membuat member dan class bisa di akses dari mana
saja.

Contoh :
Public
Public Agenda Style
Pada class Person terdapat dua member, yaitu:

1. atribut name
Public

2. method changeName()

Kedua member tersebut kita berikan modifier public. Artinya mereka akan bisa dia
kses dari mana saja.
Namun, class Person tidak kita berikan modifier. Maka yang akan terjadi adalah cl
ass tersebut tidak akan bisa diimpor (diakses) dari luar package.
Public Agenda Style
Pada class Person terdapat dua member, yaitu:

1. atribut name
Public

2. method changeName()

Kedua member tersebut kita berikan modifier public. Artinya mereka akan bisa dia
kses dari mana saja.
Namun, class Person tidak kita berikan modifier. Maka yang akan terjadi adalah cl
ass tersebut tidak akan bisa diimpor (diakses) dari luar package.
Public Agenda Style
Class Person berada di dalam package modifier, lalu kita coba akses dari
default package, maka yang akan terjadi adalah error seperti gambar di atas.
Bagaimana solusinya agar bisa diakses dari luar package?
Public

Ya kita harus menambahkan modifier public ke dalam class Person.


Public Agenda Style
Maka error akan menghilang dan class Person akan bisa diimpor dari package
manapun.
Public

Pada class diagram, modifier public digambarkan dengan simbol plus (+).
Contoh:
Modifier Private
Private

Modifier private akan membuat member hanya bisa diakses oleh dari dalam class
itu sendiri.
Private

Perlu diingat:
Modifier private tidak bisa diberikan kepada class, enum, dan interface. Modifier
private hanya bisa diberikan kepada member class.

Contoh :
class Person {
private String name;

public void setName(name){


this.name = name;
}
public String getName(){
return this.name; }
}
Private

Pada contoh di atas, kita memberikan modifier private pada atribut name dan mod
ifier public pada method setName() dan getName().
Apabila kita coba mengkases langusung atribut name seperti ini:
Private

Person mPerson = new Person()


mPerson.name = "Petani Kode"; // <- maka akan terjadi error di sini
Private

Lalu, bagaimana cara mengakses member private dari luar class?


Kita bisa memanfaatkan method setter dan getter. Karena, method ini akan selalu
diberikan modifier public.
Private

Contoh:
Person mPerson = new Person()
mPerson.setName(“PetaniKode”);

System.out.println(“Person Name : “ + mPerson.getName());

Pada class diagram, modifier private digambarkan dengan simbol minus (-).
Modifier Protected
Protected

Modifier protected akan membuat member dan class hanya bisa diakses dari:
Class itu sendiri;
Protected

1. Sub class atau class anak;


2. Package (class yang berada satu package dengannya).
3. Modifier protected juga hanya boleh digunakan pada member saja.
Contoh:
package modifier;

public class Person {


protected String name;

public void setName(String name){


this.name = name; }

public String getName(){


return this.name;
}
}
Inheritance
Mengapa kita harus belajar Inheritance?

Kita sudah mengetahui soal class atau objek bisa saling berhubungan dengan
Inheritance

class yang lain. Salah satu bentuk hubungannya adalah Inheritance(Pewarisan).


Hubungan ini seperti hubungan keluarga antara orang tua dan anak. Sebuah
class di Java, bisa memiliki satu atau lebih keturunan atau class anak. Class
anak akan memiliki warisan properti dan method dari class orang tua. Lalu menga
pa kita harus belajar Inheritance? Perhatikan gambar berikut :
Mengapa kita harus belajar Inheritance?

Misalkan dalam game, kita ingin membuat class-class untuk musuh dengan sifat
Dan perilaku yang berbeda.
Inheritance

Lalu kita membuat kode untuk masing masing kelas seperti ini :
Zombie.java Pocong.java burung.java
class Zombie { class Pocong {
String name; class Burung {
String name; String name;
int hp; int hp;
int attackPoin; int hp;
int attackPoin; int attackPoin;
void attack(){ void attack(){
// ... } void attack(){
// ... } // ... }
void walk(){ void jump(){
//... } void walk(){
//... } //... }
} } void jump(){
//... }
void fly(){
//... }
}
Mengapa kita harus belajar Inheritance?

Apakah boleh seperti ini?


Ya, boleh-boleh saja. Akan Tapi tidak efektif, karena kita menulis berulang-ulang p
Inheritance

roperti dan method yang sama.


Bagaimana solusinya?

Kita harus menggunakan inheritance.

Mari kita lihat member class yang sama:


Mengapa kita harus belajar Inheritance?

Setelah menggunakan inheritance, maka akan menjadi seperti ini:


Inheritance
Mengapa kita harus belajar Inheritance?

Class Enemy adalah class induk yang memiliki anak Zombie, Pocong, dan Burung
. Apapun properti yang ada di class induk, akan dimiliki juga oleh class anak.
Inheritance

Lalu bagaimana bentuk kodenya dalam Java?


Bentuk kodenya akan seperti ini:
Enemy.java

Class Induk/Orang tua

class Enemy {
String name;
int hp;
int attackPoin;
void attack()
{
System.out.println("Serang!"); }
}

Pada class anak, kita menggunakan kata


kunci extends untuk menyatakan kalau dia a
dalah class turunan dari Enemy.
Zombie.java Pocong.java burung.java
class Zombie extends Enemy { class Pocong extends Enemy { class Burung extends Enemy {

void walk(){ void jump(){ void walk(){


System.out.println("Zombie System.out.println("loncat-loncat!"); System.out.println("Burung
jalan-jalan"); } berjalan");
} } }
}
void jump(){
System.out.println("Burung loncat-
loncat");
}
void fly(){
System.out.println("Burung
Terbang...");
}
}
Lalu, bila kita ingin membuat objek dari
class-class tersebut, Kita bisa membuat
nya seperti ini:

Enemy monster = new Enemy();


Zombie zumbi = new Zombie();
Pocong hantuPocong = new Pocong();
Burung garuda = new Burung();}
Contoh Program Inheritance

Setelah memahami konsep inheritance, sekarang mari kita buat contoh program s
ederhana.
Inheritance

Program yang akan kita buat untuk berfungsi untuk menghitung luas dan keliling b
angun datar.

Bentuk class diagramnya seperti ini:


BangunDatar.java

package inheritance;
public class BangunDatar {
float luas(){
System.out.println("Menghitung laus bangun
datar");
return 0;
}
float keliling(){
System.out.println("Menghitung keliling bangun
datar");
return 0;
}
}
Persegi.java Lingkaran.java

package inheritance;
public class Lingkaran extends BangunDatar{
package inheritance; // jari-jari lingkaran
public class Persegi extends BangunDatar { float r; }
float sisi; }
PersegiPanjang.java Segitiga.java

package inheritance;
public class Segitiga extends BangunDatar{
package inheritance; float alas;
float tinggi;
public class PersegiPanjang extends BangunDatar { }
float panjang;
Float lebar;
}
Main.java
package inheritance;
public class Main { public static void main(String[] args) {

// membuat objek bangun datar


BangunDatar mBangunDatar = new BangunDatar();

// membuat objek persegi dan mengisi nilai properti


Persegi mPersegi = new Persegi(); mPersegi.sisi = 2;

// membuat objek Lingkaran dan mengisi nilai properti


Lingkaran mLingkaran = new Lingkaran(); mLingkaran.r = 22;

// membuat objek Persegi Panjang dan mengisi nilai properti


PersegiPanjang mPersegiPanjang = new PersegiPanjang();
mPersegiPanjang.panjang = 8;
mPersegiPanjang.lebar = 4;

// membuat objek Segitiga dan mengisi nilai properti


Segitiga mSegitiga = new Segitiga();
mSegitiga.alas = 12;
mSegitiga.tinggi = 8;

// memanggil method luas dan keliling


mBangunDatar.luas();
mBangunDatar.keliling();

mPersegi.luas();
mPersegi.keliling();

mLingkaran.luas();
mLingkaran.keliling();

mPersegiPanjang.luas();
mPersegiPanjang.keliling();

mSegitiga.luas();
mSegitiga.keliling(); } }
Contoh Program Inheritance

Setelah itu, coba jalankan class Main, maka hasilnya:


Inheritance
Contoh Program Inheritance

Kenapa hasilnya bisa begitu?


Karena yang kita panggil sebenarnya adalah method luas() dan keliling()milik si in
Inheritance

duk (BangunDatar).
Objek anak dari BangunDatar belum memiliki method luas() dan keliling(), akhirny
a mengambil milik induknya.

Lalu bagaimana kalau kita ingin membuat agar semua class anak memiliki metho
d luas() dan keliling() yang berbeda dari induk?

Jawabanya: menggunakan method overriding.


Method Overriding

Method Overriding dilakukan saat kita ingin membuat ulang sebuah method pada
sub-class atau class anak.
Inheritance

Method Overriding dapat dibuat dengan menambahkan anotasi @Override di atas


nama method atau sebelum pembuatan method.
Method Overriding
Inheritance

Artinya kita menulis ulang method luas() dan keliling() di class anak.
Sekarang mari kita buat method overriding untuk semua class anak.
Method Overriding
Inheritance
Method Overriding
Inheritance
Method Overriding
Inheritance
Method Overriding
Inheritance
Polymorphism Polymorphism

Polymorphism adalah salah satu konsep OOP di Java. Dimana Polymorphism


adalah Kemampuan sebuah variabel reference untuk merubah behavior sesua
i dengan apa yang dipunyai object (Berganti-ganti peran).

Polymorphism dalam Pewarisan


Kita bisa menggunakan variabel dengan tipe data superclass untuk
memegang referensi dari objek subclass-nya. Perhatikan contoh berikut :
Polymorphism Contoh Sederhana

class A{
}

class B extends A{
}

class C{
public static void main(String[] args){
A ob = new B();
}
}

Variabel class A memegan


g referensi dari objek B
Polymorphism Penjelasan

Variabel ob dengan tipe data class A memegang referensi ke objek dengan tip
e data class B. Ini adalah hal yang diijinkan karena class B adalah turunan dar
i class A.
Secara normal, pada saat hendak memanggil suatu method dari suatu objek, ja
va akan mengecek apakah class dari objek tersebut memiliki method yang dim
aksud. Semua ini dilakukan oleh java pada saat kompilasi. Oleh karena java m
engizinkan variabel dengan tipe data superclass untuk memegang referensi da
ri objek superclass-nya ditambah dengan melakukan method overriding, java ti
dak lagi dapat menentukan method mana yang dipanggil pada waktu kompilasi
.
Polymorphism Contoh Polymorphism 1 (1)

class A{
public void cetak(){
System.out.println("Method dari kelas A");
}
} Class B dan C haruslah
menjadi keturunan dari class
class B extends A{ A
public void cetak(){
System.out.println("Method dari kelas B");
}
}
class C extends A{
public void cetak(){
System.out.println("Method dari kelas C");
}
}
Polymorphism Contoh Polymorphism 1 (2)

class Demo{
public static void main(String[] args){
A objekA = new A();
B objekB = new B();
C objekC = new C();

objekA.cetak();
objekA berperan s
objekA = objekB; eperti objekB
objekA.cetak();

objekA = objekC; objekA berperan s


objekA.cetak(); eperti objekC
}
}
Polymorphism Contoh Polymorphism 1 (2)

Hasil :

Method dari kelas A


Method dari kelas B
Method dari kelas C

Anda mungkin juga menyukai