Polymorphism dalam Java
Polymorphism dalam Java
Pengertian Polymorphism
Konsep OOP
Jenis Polymorphism
Polymorphism Overloading
Ciri Overloading
Contoh Overloading
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;
}
}
Penjelasan Overloading
Kelebihan Overloading
Kapan Overloading Digunakan
Polymorphism Overriding
Ciri Overriding
Contoh Overriding
Kode Overriding Parent
class Hewan {
void suara() {
System.out.println("Hewan bersuara");
}
}
Kode Overriding Child
class Kucing extends Hewan {
void suara() {
System.out.println("Meong");
}
}
Main Program
public class Main {
public static void main(String[] args) {
Hewan h = new Kucing();
h.suara();
}
}
Penjelasan Overriding
Kelebihan Overriding
Kapan Overriding Digunakan
Perbedaan Overloading vs Overriding
Binding
Keuntungan Polymorphism
Polymorphism pada Constructor
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);
}
}
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");
}
}
Keyword this
Contoh this (Atribut)
class Mahasiswa {
String nama;
Mahasiswa(String nama){
this.nama = nama;
}
}
Penjelasan this
Contoh this (Method)
class Demo {
void tampil(){
System.out.println("Halo");
}
void panggil(){
this.tampil();
}
}
Keyword super
Contoh super (Atribut)
class Hewan {
String nama = "Hewan";
}
class Kucing extends Hewan {
String nama = "Kucing";
void tampil(){
System.out.println(super.nama);
}
}
Contoh super (Method)
class Hewan {
void suara(){
System.out.println("Hewan bersuara");
}
}
class Kucing extends Hewan {
void suara(){
super.suara();
System.out.println("Meong");
}
}
Kapan Menggunakan this & super
Flow this (Alur Pemanggilan)
Objek dibuat
↓
Constructor dipanggil
↓
this.atribut → mengakses atribut sendiri
↓
this.method() → memanggil method dalam class yang sama
↓
Eksekusi selesai
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
Latihan 1 (Overloading)
Buat class Kalkulator dengan method:
- tambah(int a, int b)
- tambah(double a, double b)
Tampilkan hasil di main.
Jawaban Latihan 1
class Kalkulator {
int tambah(int a, int b){
return a+b;
}
double tambah(double a, double b){
return a+b;
}
}
Latihan 2 (Overriding)
Jawaban Latihan 2
class Kendaraan {
void jalan(){
System.out.println("Kendaraan berjalan");
}
}
class Mobil extends Kendaraan {
void jalan(){
System.out.println("Mobil berjalan");
}
}
Latihan 3 (this)
Jawaban Latihan 3
class Mahasiswa {
String nama;
Mahasiswa(String nama){
this.nama = nama;
}
}
Latihan 4 (super)
Jawaban Latihan 4
class Hewan {
void suara(){
System.out.println("Hewan");
}
}
class Kucing extends Hewan {
void suara(){
super.suara();
System.out.println("Meong");
}
}
class Hewan
class Hewan {
String bunyi = "Super Bunyikan ";
void suara(){
System.out.println("Hewan");
}
}
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");
}
}
class Main
class Main {
public static void main(String[] args) { System.out.println("Hello World");
Kucing k = new Kucing();
k.suara();
}
}
Kesimpulan