Java Inheritance and Composition

216
0
Share:
inheritance6

Bandung, Blog BSP – Di dalam java terdapat 2 cara untuk me reause (menggunakan kembali) class yang telah dibuat,yaitu dengan cara Composition (has-a) dan Inheritance (is-a).Terdapat beberapa perbedaan salah satunya, composition (aggregation):  class baru disusun dari class yang telah ada. inheritance (pewarisan):  class baru dibuat berdasarkan modifikasi dari class yang telah ada.

 

Inheritance and Composition

Pada kali ini kita akan membahas tentang Inheritance dan Compisotion di dalam java.

 

Composition

  • Kita mempunyai kelas point
  • Kita buat kelas Line. Kita dapat re-use class Point dengan composition.
  • Kita sebut: “A line is composed of two points”, or “A line has two points”.
  • Composition juga disebut relasi “has-a”

compo

 

Inheritance

Inheritance atau biasa disebut dengan pewarisan

inheritance

Inheritance mempunyai Superclass dan Subclass, Superclass adalah kelas yang berada pada hirarki lebih atas (parrent) sedangkan Subclass adalah kelas yang berada pada hirark lebih bawah (child)

inheritance2

Manfaat dari Inheritance:

  1. Menghindari duplikasi code
  2. Reuse code
  3. Menyederhanakan code
  4. Mempermudah maintenance dan perluasan code

Inheritance juga disebut relasi “is-a”,contoh:

  • Poodle is a dog
  • Owl is a bird
  • Bird is a animal

Contoh Inheritance:

subclass mewarisi superclass dengan keyword “extends”

inheritance3

Keyword “super”:

  • Keyword super digunakan untuk merujuk pada variabel dan method pada superclass.
  • Pada constructor, super digunakan untuk memanggil constructor dari superclas

Constructor pada Inheritance:

  • Constructor subclass di Java tidak diwarisi dari superclassnya.
  • Namun constructor superclass dapat digunakan di dalam subclass dengan menggunakan keyword super().
  • Setiap class di Java memiliki memiliki constructornya constructornya sendiri sendiri.

inheritance4

Method overriding

  • Selain dari mewarisi semua variabel dan method dari superclass-superclassnya, subclass dapat mengoverride variabel dan method.
  • Andaikan kita ingin menghitung luas permukaan Cylinder. Kita gunakan method getArea() pada Circle dengan cara meng-overridenya overridenya.
  • Dan selanjutnya kita ubah getVolume() untuk menghitung volume Cylinder.

@Override

  • @Override disebut sebagai annotation, yang menyuruh compiler untuk mengecek apakah ada nama method pada superclass.
  • Jika tanpa @Override, method ToString() akan dianggap sebagai method baru.
  • Jika dengan @Override, @Override, akan muncul error kompilasi jika kita tulis ToString()
  • Optional but nice to have.

Single Inheritance

  • Java tidak mensupport multiple inheritance (subclass punya lebih dari satu superclass)
  • Pada Java, subclass hanya boleh punya satu superclass langsung di atasnya. Namun superclass boleh punya banyak subclass.

java.lang.Object

  • Setiap class pada Java merupakan subclass dari Object (java.lang.Object).
  • Java.lang.Object disebut common root.
  • Hal ini diperlukan untuk running program dengan JRE, contohnya pada kasus multithreading, garbage collector.

Composition vs Inheritance

  • “A line is composed of 2 points” vs “A line is a point extended by another point”?
  • Which one?
  • Pendapat ahli: Use composition if possible, before considering inheritance.

inheritance5

Referensi:

Inheritane and Composition

Share:

Leave a reply