Top Banner
PEMROGRAMAN LANJUT Fakultas Ilmu Komputer, Universitas Brawijaya KONSEP OOP: PEWARISAN / INHERITANCE Dr. Eng. Herman Tolle Sistem Informasi FILKOM UB Semester Genap 2016/2017
52

PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Jun 10, 2019

Download

Documents

tranbao
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

PEMROGRAMAN LANJUT

Fakultas Ilmu Komputer, Universitas Brawijaya

KONSEP OOP:PEWARISAN / INHERITANCE

Dr.Eng.HermanTolle

Sistem Informasi FILKOM UBSemester Genap 2016/2017

Page 2: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Outline Keyword

• Inheritance• Superclass• Subclass• Extends• Reusability• Override• This & super• Final Class, Final Method

Page 3: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Inheritance (Pewarisan)

• Pewarisan suatu class pada class lainnya• Seorang ayah dapat mewariskan beberapa sifat yang

sama pada anak-anaknya, Namun setiap anak dapatmemiliki sifat yang berbeda dan tidak dimiliki olehayah maupun saudara-saudaranya

• Suatu class dapat mewariskan class member (atribut dan method) kepada class lain, konsep tersebutdikenal dengan istilah inheritance

Page 4: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Inheritance (Pewarisan)

• Inheritance | Inheritans | Pewarisan• Suatu class dapat mewariskan atribut dan method

kepada class lain (subclass), serta membentuk class hierarchy

• Penting untuk Reusability• Java Keyword:

extends

Page 5: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Syntax Inheritance

class subClass extends superClass {

// definisi class

}

• subClass à nama class turunan yang kitabuat, merupakan sub-class dari sebuah class lain

• superClass à class yang kita ingin wariskansifat-sifatnya ke class baru yang kita buat

Page 6: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Ilustrasi Inheritance

subClasssuperClass<< extends >>

• Hasil dari inheritance adalah class member padasuperClass akan diwariskan kepada subClass

• Sehingga subClass juga memiliki class member yang sama dengan superclass

• Merupakan hubungan Generaliasasi (is-A) (tanda panah dengan segitiga full)

Page 7: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Contoh inheritanceclass Kendaraan{boolean mesin;int kapasitas;

void jalan(){}

void berhenti(){}

}

class MobilBeraksi{public static void main(String args[]){Mobil sedan = new Mobil();sedan.mesin = true;sedan.kapasitas = 5;sedan.Tahun = 2014;sedan.jalan();

}}

class Mobil extends Kendaraan{

int Tahun;

String JenisMobil;

String Produsen;

}

Page 8: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

• Class Mobil merupakan turunan dari class Kendaraan, sehingga class member dari Kendaraanotomatis diwariskan kepada Mobil

• Class Mobil tidak perlu mendefinisikan ulangseluruh class member tersebut, cukup menambahkan class member baru yg hanya ada pada Class Mobil saja.

class Kendaraan

mesin

kapasitas

jalan( )

berhenti( )

<< extends >>

class Mobil

mesin

kapasitas

jalan( )

berhenti( )

Page 9: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Manfaat Inheritance

• Pewarisan Sifat: Superclass ke Subclass• Menyusun Hirarki • Reusability: (Penggunaan kembali code) kode

method bisa ditulis sekali saja dan dapat digunakanoleh semua subclass.

• Object Complexity: Subclass hanya perlumengimplementasikan perbedaannya sendiri daninduknya. Objek yang kompleks dapat dibangun dari kumpulan objek lain yang lebih sederhana

Page 10: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Semua Class adalah turunan Kelas Object

• Dalam Java, semua class, termasuk class yang membangunJava API, adalah subclassesdari superclass Object.

Page 11: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Tipe Inheritans

• Catatan: java hanya mengenal single superclass tidak ada multiple superclass

Page 12: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

LATIHAN

• Buat contoh kelas induk dan kelas turunan:– Person à Student– MahasiswaUB à MahasiswaFilkom

Page 13: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Access level pada class member

Modifier Class Package Sub-class Class lain

public Ya Ya Ya Ya

protected Ya Ya Ya Tidaktanpa modifier Ya Ya Tidak Tidak

private Ya Tidak Tidak Tidak

Page 14: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Access level pada class member

• Class member yang memiliki modifier public dapat diaksesoleh semua class dimanapun class itu berada

• Class member yang memiliki modifier protected: dapatdiakses hanya oleh class-class yang berada dalam package yang sama dan sub-class pada package yang lain

• Class member tanpa modifier hanya dapat diakses olehclass-class dalam package yang sama

• Class member yang memiliki modifier private hanya dapatdiakses dari dalam class tersebut saja

Page 15: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Ilustrasi kode program

package prog

class Saja

class Coba

varA

varB

varC

varD

objek akses

varA

varB

varC

class Lagi

objek baca

varA

class Turunan

objek sifat

varA

varB

<< extends >>

<< import >>

Page 16: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

//program 9.3a. Nama file:Coba.javapackage prog;

public class Coba{public int varA;protected int varB;int varC;private int varD;

public static void main(String args[]){Coba buat = new Coba();

buat.varA = 1; //suksesbuat.varB = 3; //suksesbuat.varC = 5; //suksesbuat.varD = 7; //sukses

}}

Page 17: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

//program 9.3b. Nama file:Saja.javapackage prog;

class Saja{public static void main(String args[]){Coba akses = new Coba();

akses.varA = 1; //akses.varB = 3; //akses.varC = 5; //akses.varD = 7; //

}}

Page 18: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

//program 9.3c. Nama file:Turunan.javaimport prog.Coba;

class Turunan extends Coba{public static void main(String args[]){Turunan sifat = new Turunan();

sifat.varA = 1; //sifat.varB = 3; //sifat.varC = 5; //sifat.varD = 7; //

}}

Page 19: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

//program 9.3d. Nama file:Lagi.javaimport prog.Coba;

class Lagi{public static void main(String args[]){Coba baca = new Coba();

baca.varA = 1; //baca.varB = 3; //baca.varC = 5; //baca.varD = 7; //

}}

Page 20: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

• Class Saja, Turunan, dan Lagi tidak dapatmengakses varD karena varD bersifat privatesehingga hanya bisa diakses dari dalam class Coba

• Class Turunan dan Lagi tidak dapat mengaksesvarC karena varC bersifat package-private sehinggahanya bisa diakses dari dalam package prog

• Class Lagi tidak dapat mengakses varB karena varBbersifat protected sehingga hanya bisa diakses daridalam package prog atau dari class yang merupakan sub-class Coba

Page 21: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

OVERLOADING METHOD IN INHERITANCE

Page 22: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Overriding Method dalam Inheritans

• “Anak kadang sedikit berbeda dari bapaknya”• Overriding adalah membuat method yang menggantikan

method induknya. • Jadi method yang sudah diturunkan dari kelas induk kita

(superclass), kita buat lagi dengan nama yang sama tapi dengan isi yang berbeda pada kelas turunan (subclass).

• Dalam java dikenal dengan penambahan kata kunci @override .

• Teknik ini digunakan untuk mengubah definisi dari functionagar lebih spesifik dan sesuai dengan sub-class yang dirancang

Page 23: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

// program 9.4. contoh overriding

class Kendaraan{

boolean mesin;

int kapasitas;

void jalan(){

System.out.println("kendaraan dijalankan");

}

void berhenti(){}

}

class Mobil extends Kendaraan{

@Overridevoid jalan(){

System.out.println("masukkan kunci");

System.out.println("putar kunci");

System.out.println("injak gas");

}

Page 24: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

public Class MobilBeraksi

{

public static void main(String args[]){

Mobil sedan = new Mobil();

sedan.jalan();

}

}

• Kelas Mobil dan Kelas Kendaraan sama-sama memiliki fungsi jalan()

• Fungsi jalan() pada kelas Mobile meng-override fungsi jalan()dari kelas induknya

• Pemanggilan fungsi jalan() dari objek Mobil akan mengeksekusi fungsi jalan() dari kelas Mobil (subclass) bukan fungsi jalan yang ada pada kelas Kendaraan (superclass)

Page 25: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

THIS, SUPER & KONSTRUKTOR

Page 26: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

this vs super

• Keyword this mengacu pada atribut danmethod yang terdapat pada class itu sendiriContoh:

this.cetak()

• Keyword super mengacu pada atribut danmethod yang terdapat pada class parentnya.Contoh:

super.cetak()

Page 27: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Contoh this & superclass Parent{public int x = 5;

}

class Child extends Parent {public int x = 10;

public void Info(int x) {System.out.println("Nilai x sebagai parameter = " + x);System.out.println("Data member x di class Child = " + this.x);System.out.println("Data member x di class Parent = " + super.x);

}}

public class NilaiX {public static void main(String[] args) {Child tes = new Child();tes.Info(20); // Tuliskan output dari perintah ini!}

}

Page 28: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Latihan

• Buat 2 buah kelas berikut• Kelas Induk: Persegi

– Atribut: panjang, lebar– Method: HitungLuas, set-get

• Kelas Turunan: Kotak– Atribut: tinggi– Method: HitungLuas (override), HitungVolume

• Gunakan kata kunci Super utk memanggil konstruktor dan fungsi yang ada di di kelas induk

Page 29: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

class Persegi{

private int panjang;private int lebar;

public Persegi(int P, int L){ this.panjang = P;this.lebar = L;} public int hitungLuas() {return panjang*lebar; }

public void CetakLuas(){ System.out.printf(“Persegi dengan panjang = %d, dan Lebar =

%d, Luas = %d”, panjang, lebar, this.hitungLuas()); }

}

public int getPanjang(){

return panjang; }

public int getLebar(){

return lebar; }

Page 30: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

class Kotak extends Persegi{

private int tinggi;public Kotak(int P, int L, int T) { super(P, L);this.tinggi = T;}

public int hitungVolume(){ return super.hitungLuas()*tinggi; }

@overridepublic int hitungLuas()

{int Luas = (2 * super.hitungLuas()) +

(2 * getPanjang()* tinggi) + (2 * getLebar() * tinggi);

return Luas; }

@overridepublic void CetakLuas() {}

Page 31: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

class KotakBeraksi{

public static void main(String[] arg){

Persegi Box1 = new Persegi(5, 10);Box1.CetakLuas(); Kotak Box2 = new Kotak(5, 10, 8);Box2.CetakLuas();

} }

Page 32: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Konstruktor dalam Inheritance

• Subclass mewarisi semua member (fields, methods, dan nested classes) dari superclass-nya.

• Konstruktor tidak termasuk member class, jadikonstruktor tidak diturunkan ke subclass,

• Tetapi, konstruktor dari superclass dapat dipanggildari subclass dengan kata kunci super.

• Konstruktor superclass Otomatis dipanggilsebelum kode pada konstruktor subclass dijalankan

Page 33: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

33

CAUTION

You must use the keyword super to call the superclass constructor. Invoking a superclass constructor’s name in a subclass causes a syntax error. Java requires that the statement that uses the keyword superappear first in the constructor.

Page 34: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

34

Constructor Chaining

public class Faculty extends Employee {public static void main(String[] args) {new Faculty();

}

public Faculty() {System.out.println("(4) Faculty's no-arg constructor is invoked");

}}

class Employee extends Person {public Employee() {this("(2) Invoke Employee’s overloaded constructor");System.out.println("(3) Employee's no-arg constructor is invoked");

}

public Employee(String s) {System.out.println(s);

}}

class Person {public Person() {System.out.println("(1) Person's no-arg constructor is invoked");

}}

Constructing an instance of a class invokes all the superclasses’ constructors along the inheritance chain. This is known as constructor chaining.

Page 35: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

35

Trace Executionpublic class Faculty extends Employee {public static void main(String[] args) {new Faculty();

}

public Faculty() {System.out.println("(4) Faculty's no-arg constructor is invoked");

}}

class Employee extends Person {public Employee() {this("(2) Invoke Employee’s overloaded constructor");System.out.println("(3) Employee's no-arg constructor is invoked");

}

public Employee(String s) {System.out.println(s);

}}

class Person {public Person() {System.out.println("(1) Person's no-arg constructor is invoked");

}}

1. Start from the main method

animation

Page 36: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

36

Trace Executionpublic class Faculty extends Employee {public static void main(String[] args) {new Faculty();

}

public Faculty() {System.out.println("(4) Faculty's no-arg constructor is invoked");

}}

class Employee extends Person {public Employee() {this("(2) Invoke Employee’s overloaded constructor");System.out.println("(3) Employee's no-arg constructor is invoked");

}

public Employee(String s) {System.out.println(s);

}}

class Person {public Person() {System.out.println("(1) Person's no-arg constructor is invoked");

}}

2. Invoke Faculty constructor

animation

Page 37: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

37

Trace Executionpublic class Faculty extends Employee {public static void main(String[] args) {new Faculty();

}

public Faculty() {System.out.println("(4) Faculty's no-arg constructor is invoked");

}}

class Employee extends Person {public Employee() {this("(2) Invoke Employee’s overloaded constructor");System.out.println("(3) Employee's no-arg constructor is invoked");

}

public Employee(String s) {System.out.println(s);

}}

class Person {public Person() {System.out.println("(1) Person's no-arg constructor is invoked");

}}

3. Invoke Employee’s no-arg constructor

animation

Page 38: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

38

Trace Executionpublic class Faculty extends Employee {public static void main(String[] args) {new Faculty();

}

public Faculty() {System.out.println("(4) Faculty's no-arg constructor is invoked");

}}

class Employee extends Person {public Employee() {this("(2) Invoke Employee’s overloaded constructor");System.out.println("(3) Employee's no-arg constructor is invoked");

}

public Employee(String s) {System.out.println(s);

}}

class Person {public Person() {System.out.println("(1) Person's no-arg constructor is invoked");

}}

4. Invoke Employee(String) constructor

animation

Page 39: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

39

Trace Executionpublic class Faculty extends Employee {public static void main(String[] args) {new Faculty();

}

public Faculty() {System.out.println("(4) Faculty's no-arg constructor is invoked");

}}

class Employee extends Person {public Employee() {this("(2) Invoke Employee’s overloaded constructor");System.out.println("(3) Employee's no-arg constructor is invoked");

}

public Employee(String s) {System.out.println(s);

}}

class Person {public Person() {System.out.println("(1) Person's no-arg constructor is invoked");

}}

5. Invoke Person() constructor

animation

Page 40: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

40

Trace Executionpublic class Faculty extends Employee {public static void main(String[] args) {new Faculty();

}

public Faculty() {System.out.println("(4) Faculty's no-arg constructor is invoked");

}}

class Employee extends Person {public Employee() {this("(2) Invoke Employee’s overloaded constructor");System.out.println("(3) Employee's no-arg constructor is invoked");

}

public Employee(String s) {System.out.println(s);

}}

class Person {public Person() {System.out.println("(1) Person's no-arg constructor is invoked");

}}

6. Execute println

animation

Page 41: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

41

Trace Executionpublic class Faculty extends Employee {public static void main(String[] args) {new Faculty();

}

public Faculty() {System.out.println("(4) Faculty's no-arg constructor is invoked");

}}

class Employee extends Person {public Employee() {this("(2) Invoke Employee’s overloaded constructor");System.out.println("(3) Employee's no-arg constructor is invoked");

}

public Employee(String s) {System.out.println(s);

}}

class Person {public Person() {System.out.println("(1) Person's no-arg constructor is invoked");

}}

7. Execute println

animation

Page 42: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

42

Trace Executionpublic class Faculty extends Employee {public static void main(String[] args) {new Faculty();

}

public Faculty() {System.out.println("(4) Faculty's no-arg constructor is invoked");

}}

class Employee extends Person {public Employee() {this("(2) Invoke Employee’s overloaded constructor");System.out.println("(3) Employee's no-arg constructor is invoked");

}

public Employee(String s) {System.out.println(s);

}}

class Person {public Person() {System.out.println("(1) Person's no-arg constructor is invoked");

}}

8. Execute println

animation

Page 43: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

43

Trace Executionpublic class Faculty extends Employee {public static void main(String[] args) {new Faculty();

}

public Faculty() {System.out.println("(4) Faculty's no-arg constructor is invoked");

}}

class Employee extends Person {public Employee() {this("(2) Invoke Employee’s overloaded constructor");System.out.println("(3) Employee's no-arg constructor is invoked");

}

public Employee(String s) {System.out.println(s);

}}

class Person {public Person() {System.out.println("(1) Person's no-arg constructor is invoked");

}}

9. Execute println

animation

Page 44: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

FINAL CLASS, FINAL METHOD

Page 45: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Final Class

• Class yang tidak boleh di extends lagi dapatdibuat dengan menambahkan keyword finalContoh:

public final class KelasFinal {...}

• Contoh final class dalam java package:– java.lang.System– java.lang.String

Page 46: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Final Method

• Method yang tidak dapat di override olehsub classContoh deklarasi:

public final void contohFinalMethod() {...}

Page 47: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Contoh Final Method

class ChessAlgorithm {enum ChessPlayer { WHITE, BLACK }...final ChessPlayer getFirstPlayer() {

return ChessPlayer.WHITE;}...

}

Page 48: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Final Variabel

• Variabel Final adalah variabel yang hanyadapat diinisialisasi satu kali saja.Contoh deklarasi:

public final double nilaiEuler;

Page 49: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

Relasi Antar Kelas

• Suatu class dapat dibangun dari ataupun memiliki keterkaitan dengan kelas yang lain

• Secara umum relasi antar class adalah:– Depedensi (“uses-a”); (relasi menggunakan)– Agregasi (“has-a”); (relasi mempunyai )– Inheritance (“is-a”); (relasi adalah)

Page 50: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

IS-A

• IS-A is a way of saying : This object is a type of that object.

public class Animal {}public class Mammal extends Animal{}public class Reptile extends Animal{}public class Dog extends Mammal{}

Now, if we consider the IS-A relationship, we can say −• Mammal IS-A Animal• Reptile IS-A Animal• Dog IS-A Mammal• Hence : Dog IS-A Animal as well

Page 51: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

51

Overriding vs. Overloading

public class Test { publ ic stat ic void main( String[ ] args) { A a = new A(); a. p(10); a. p(10.0) ; } } class B { publ ic void p(doub le i) { Sy stem.ou t.print ln(i * 2); } } class A exten ds B { // T his met hod ove rrides the me thod in B publ ic void p(doub le i) { Sy stem.ou t.print ln(i); } }

public class T est { publi c stati c void main(St ring[] args) { A a = new A(); a.p (10); a.p (10.0); } } class B { publi c void p(doubl e i) { Sys tem.out .printl n(i * 2 ); } } class A extend s B { // Th is meth od over loads t he meth od in B publi c void p(int i ) { Sys tem.out .printl n(i); } }

Page 52: PEMROGRAMAN LANJUT - hermantolle.com · OverridingMethod dalam Inheritans •“Anak kadang sedikit berbeda dari bapaknya” •Overridingadalah membuat method yang menggantikan method

52

The Object Class and Its Methods

Every class in Java is descended from the java.lang.Object class. If no inheritance is specified when a class is defined, the superclass of the class is Object.

public class Circle { ... }

Equivalent public class Circle extends Object { ... }