Di materi sebelumya kita tau klo polymorpism ini merupakan salah satu fitur Object Oriented Programming. Beberapa fitur diataranya yaitu Override dan Overload

Override

Mungkin dari temen-temen pasti tau apa itu override, yap dari namanya ja udah override artinya kurang lebih sama kayak rename atau replace. Jadi penjelasnya dari kelas parent misalnya punya method dengan nama hitung() maka di kelas child dibuat ulang dengan nama yang sama kemudian isinya pun memungkinkan berbeda. Contohnya seperti berikut:

ParentOverride

1
2
3
4
5
6
7
8
package tdi.training.java.core;

public class ParentOverride{

    public void hitung(){
        System.out.println("Ini dari kelas parent");
    }
}

ChildOverride

1
2
3
4
5
6
7
8
9
package tdi.training.java.core;

public class ChildOverride extends ParentOverride {

    @Override
    public void hitung(){
        System.out.println("ini dari kelas child");
    }
}

MainApplication

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package tdi.training.java.core;

public class MainApplication{

    public static void main(String[] args){
        ParentOverride ganti = new ParentOverride();
        System.out.println("nilai hitung dari parent override ");
        ganti.hitung();

        ganti = new ChildOverride();
        System.out.println("nilai hitung dari child override ");
        ganti.hitung();
    }
}

Overloading

Di bahasa pemograman Java, untuk function atau method yang memiliki nama yang sama dalam satu class yang sama itu memang dilarang tapi ada exeption untuk yang Approach yang satu ini. Tapi ada syarat dan ketentuanya sebagai berikut:

  1. Jumlah paramenter atau arguments yang berbeda-beda.
  2. Urutan tipe data untuk parameter atau arguments yang berbeda.
  3. Return type yang berbeda tidak mempengaruhi.

Supaya lebih jelasnya berikut ini contoh, implementasinya:

ParentOverloading

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package tdi.training.java.core;

import java.math.BigDecimal;

public class ParentOverloading{

    public void hitung() {
        System.out.println("10");
    }

    public void hitung(Integer bil1){
        System.out.println(bil1);
    }

    public void hitung(Integer bil1, Integer bil2){
        System.out.println(bil1 + bil2);
    }

    public void hitung(BigDecimal bil1, Integer bil2){
        System.out.println(bil1.add(new BigDecimal(bil2)));
    }
}

MainApplication

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package tdi.training.java.core;

import java.math.BigDecimal;

public class MainApplication{

    public static void main(String[] args){
        ParentOverloading calkulator = new ParentOverloading();
        calkulator.hitung(); // out -> 10
        calkulator.hitung(20); // out -> 20
        calkulator.hitung(10, 20); // out -> 30
        calkulator.hitung(new BigDecimal(1000), 10); // out -> 1010
    }
}