1 of 50

Polymorphism dalam Java

2 of 50

Polymorphism dalam Java

  • Konsep OOP yang memungkinkan satu interface memiliki banyak bentuk.
  • Nama sama tapi tingkah laku berbeda.
  • Contoh:
    • void jumlah()
    • void jumlah(int a)
    • void jumlah(int a,int b)
    • void jumlah(double c)

3 of 50

Pengertian Polymorphism

  • Poly = banyak, morph = bentuk
  • Artinya satu method bisa memiliki banyak perilaku.

4 of 50

Konsep OOP

  • Encapsulation
  • Inheritance
  • Polymorphism
  • Abstraction

5 of 50

Jenis Polymorphism

  • 1. Compile-time (Overloading)
  • 2. Runtime (Overriding)

6 of 50

Polymorphism Overloading

  • Terjadi saat method memiliki nama sama tapi jumlah dan atau tipe parameter berbeda.

7 of 50

Ciri Overloading

  • Nama method sama
  • Tipe dan Jumlah Parameter berbeda
  • Dalam satu class

8 of 50

Contoh Overloading

  • Method dengan parameter berbeda

9 of 50

Kode Overloading

class Hitung {

int tambah(int a, int b) {

return a + b;

}

int tambah(int a, int b, int c) {

return a + b + c;

}

}

10 of 50

Penjelasan Overloading

  • Method tambah dipanggil sesuai jumlah parameter.
  • int hasil = tambah(2,5);
  • Int total = tambah (2, 3, 4);

11 of 50

Kelebihan Overloading

  • Mempermudah penggunaan method dengan berbeda tipe dan jumlah data
  • Kode lebih fleksibel

12 of 50

Kapan Overloading Digunakan

  • Saat operasi sama tapi tipe dan atau jumlah input berbeda

13 of 50

Polymorphism Overriding

  • Terjadi saat subclass mengubah tingkah laku method dari superclass

14 of 50

Ciri Overriding

  • Harus inheritance
  • Nama & parameter sama
  • Behavior berbeda

15 of 50

Contoh Overriding

  • Subclass mengubah method parent

16 of 50

Kode Overriding Parent

class Hewan {

void suara() {

System.out.println("Hewan bersuara");

}

}

17 of 50

Kode Overriding Child

class Kucing extends Hewan {

void suara() {

System.out.println("Meong");

}

}

18 of 50

Main Program

public class Main {

public static void main(String[] args) {

Hewan h = new Kucing();

h.suara();

}

}

19 of 50

Penjelasan Overriding

  • Method yang dipanggil tergantung objek runtime

20 of 50

Kelebihan Overriding

  • Mendukung dynamic binding
  • Fleksibilitas tinggi

21 of 50

Kapan Overriding Digunakan

  • Saat ingin behavior berbeda pada subclass

22 of 50

Perbedaan Overloading vs Overriding

  • Overloading: compile time
  • Overriding: runtime

23 of 50

Binding

  • Static Binding: Overloading
  • Dynamic Binding: Overriding

24 of 50

Keuntungan Polymorphism

  • Kode reusable
  • Mudah dikembangkan
  • Lebih fleksibel

25 of 50

Polymorphism pada Constructor

  • Polymorphism tidak hanya terjadi pada metoda, tapi juga Constructor
  • Pemanggil harus menyesuaikan jumlah dan tipe parameternya

26 of 50

class Data

class Data {

int a;

double b;

String c;

Data() {

System.out.println("tanpa argumen");

}

Data(int a) {

System.out.println("1 argumen " + a);

}

Data(int a, double b) {

System.out.println("2 argumen " + a + " dan " + b);

}

Data(int a, double b, String c) {

System.out.println("3 tanpa argumen " + a + " , " + b + " dan " + c);

}

}

27 of 50

Pemanggilan berbagai Konstruktor

class Main {

public static void main(String[] args) {

Data d1 = new Data();

Data d2 = new Data(5, 6.5);

Data d3 = new Data(1, 2.3, "Empat");

}

}

28 of 50

Keyword this

  • Digunakan untuk mereferensikan atribut atau method dalam class yang sama.

29 of 50

Contoh this (Atribut)

class Mahasiswa {

String nama;

Mahasiswa(String nama){

this.nama = nama;

}

}

30 of 50

Penjelasan this

  • this.nama digunakan untuk membedakan antara parameter dan atribut.

31 of 50

Contoh this (Method)

class Demo {

void tampil(){

System.out.println("Halo");

}

void panggil(){

this.tampil();

}

}

32 of 50

Keyword super

  • Digunakan untuk mengakses atribut atau method dari superclass.

33 of 50

Contoh super (Atribut)

class Hewan {

String nama = "Hewan";

}

class Kucing extends Hewan {

String nama = "Kucing";

void tampil(){

System.out.println(super.nama);

}

}

34 of 50

Contoh super (Method)

class Hewan {

void suara(){

System.out.println("Hewan bersuara");

}

}

class Kucing extends Hewan {

void suara(){

super.suara();

System.out.println("Meong");

}

}

35 of 50

Kapan Menggunakan this & super

  • this: akses dalam class
  • super: akses parent class

36 of 50

Flow this (Alur Pemanggilan)

Objek dibuat

Constructor dipanggil

this.atribut → mengakses atribut sendiri

this.method() → memanggil method dalam class yang sama

Eksekusi selesai

37 of 50

Flow super (Alur Pemanggilan)

Objek subclass dibuat

Constructor superclass dipanggil (super())

Subclass constructor berjalan

super.atribut → akses atribut parent

super.method() → panggil method parent

Eksekusi selesai

38 of 50

Latihan 1 (Overloading)

Buat class Kalkulator dengan method:

- tambah(int a, int b)

- tambah(double a, double b)

Tampilkan hasil di main.

39 of 50

Jawaban Latihan 1

class Kalkulator {

int tambah(int a, int b){

return a+b;

}

double tambah(double a, double b){

return a+b;

}

}

40 of 50

Latihan 2 (Overriding)

  • Buat class Kendaraan dengan method jalan().
  • Buat subclass Mobil yang mengoverride method tersebut.

41 of 50

Jawaban Latihan 2

class Kendaraan {

void jalan(){

System.out.println("Kendaraan berjalan");

}

}

class Mobil extends Kendaraan {

void jalan(){

System.out.println("Mobil berjalan");

}

}

42 of 50

Latihan 3 (this)

  • Buat class Mahasiswa dengan atribut nama.
  • Gunakan this pada constructor untuk mengisi nilai.

43 of 50

Jawaban Latihan 3

class Mahasiswa {

String nama;

Mahasiswa(String nama){

this.nama = nama;

}

}

44 of 50

Latihan 4 (super)

  • Buat class Hewan dan Kucing.
  • Gunakan super untuk memanggil method parent.

45 of 50

Jawaban Latihan 4

class Hewan {

void suara(){

System.out.println("Hewan");

}

}

class Kucing extends Hewan {

void suara(){

super.suara();

System.out.println("Meong");

}

}

46 of 50

class Hewan

class Hewan {

String bunyi = "Super Bunyikan ";

void suara(){

System.out.println("Hewan");

}

}

47 of 50

class Kucing

class Kucing extends Hewan {

String bunyi = "This Suarakan ";

void suara(){

System.out.println(super.bunyi);

super.suara();

System.out.println(this.bunyi);

System.out.println("Meong");

}

}

48 of 50

class Main

class Main {

public static void main(String[] args) { System.out.println("Hello World");

Kucing k = new Kucing();

k.suara();

}

}

49 of 50

Kesimpulan

  • Polymorphism adalah konsep penting dalam OOP Java

50 of 50