INHERITANCE

Nama : Achmad Sultan Wijaya
NIM   : 1911502274
PERTEMUAN 9

Pengertian dasar Inheritance  
- Inheritance (Pewarisan) merupakan salah satu dari tiga konsep dasar OOP. Konsep inheritance ini    mengadopsi dunia riil dimana suatu entitas/obyek dapat mempunyai entitas/obyek turunan. Dengan    konsep inheritance, sebuah class dapat mempunyai class turunan. Suatu class yang mempunyai  
  class turunan dinamakan parent class atau base class. Sedangkan class turunan itu sendiri seringkali    disebut subclass atau child class. Suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent      class.Karena suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class-nya, maka     
  member dari suatu subclass adalah terdiri dari apa-apa yang ia punyai dan juga apa-apa yang ia    
  warisi dari class parent-nya. Kesimpulannya, boleh dikatakan bahwa suatu subclass adalah tidak     
  lain hanya memperluas (extend) parent class-nya.

  • Disini saya akan mencoba membuat program Inheritance : Access Control dengan method private, default, dan protected. 
Inheritance : Access Control 
  A) Method Private 
  • Variabel dan method yang dideklarasikan private hanya bisa diakses oleh class yg mendeklarasikan variabel dan method tersebut.
Contoh Program 1   
      1) Program Pertama saya akan mencoba membuat contoh program yaitu Mengakses private
           variabel dari class lain. dan saya akan membuat codingan tersebut 
       Contoh Codingan :

class Complex {
  private double real, imaginary;

public Complex(double r, double i) {
real = r; imaginary = i;
}
public Complex add(Complex c) {
return new Complex(real + c.real, imaginary + c.imaginary);
}
}

class Client {
void useThem() {
Complex c1 = new Complex(1, 2);
Complex c2 = new Complex(3, 4);
Complex c3 = c1.add(c2);
double d = c3.imaginary; // Illegal!
}
}

    2) Sehingga outpunya bakal akan terjadi seperti ini :

Hasil outputnya tersebut bakal akan terjadi seperti ini karena tidak ada perintah string
dan tidak ada perintah system out tersebut. tetapi outputnya tidak ada yang error

Contoh Program 2 
    1) Program Kedua saya akan mencoba membuat contoh program yaitu  Mengakses private variabel
        dari subclass. dan saya akan membuat codingan tersebut
    Contoh Program :

class Complex1 {
private double real, imaginary;
}
class SubComplex extends Complex1 {
SubComplex(double r, double i){
//real = r; // Trouble!
}
}

    2) Sehingga outpunya bakal akan terjadi seperti ini :

Hasil outputnya tersebut bakal akan terjadi seperti ini karena tidak ada perintah string
dan tidak ada perintah system out tersebut. tetapi outputnya tidak ada yang error.
  B) Method Default

  • Bukan merupakan Java keyword. 
  • Merupakan jenis akses kontrol jika kita tidak menuliskan akses kontrol secara eksplisit. 
  • Semua feature class-class yang ada dalam satu package bisa diakses oleh semua yang ada dalam package tersebut. 
  • Class diluar package boleh melakukan subclass, tetapi subclass tersebut tidak bisa mengakses feature superclass. 

Contoh Program 1 
      1) Program Pertama saya akan mencoba membuat contoh program yaitu akses di package yang
          sama. Saya akan membuat nama program yaitu Ski dan codinganya seperti ini.
       Contoh Codingan :

package sportinggoods;
class Ski {
  void applyWax() {} // default access
}

      2) Selanjutnya saya membuat program baru lagi untuk memanggil Ski dan diberi nama
          DownhillSki dan codinganya seperti ini.
      Contoh Codingan :

package sportinggoods;
class DownhillSki extends Ski {
void tuneup() {
applyWax(); // OK
// other tuneup functionality here
}
}

    3) Dan hasil outpunya akan terjadi seperti ini.

Hasil outputnya tersebut bakal akan terjadi seperti ini karena tidak ada perintah string
dan tidak ada perintah system out tersebut. tetapi outputnya tidak ada yang error.

Contoh Program 2
    1) Program Kedua saya akan mencoba membuat contoh program yaitu akses di package yang
        berbeda. dan saya akan membuat codingan tersebut
    Contoh Program :

 package sportinggoods;
class Ski1 {
void applyWax() {} // default access
  }

    2) Selanjutnya saya membuat program baru lagi untuk memanggil Ski dan diberi nama
        DownhillSki tetapi saya akan membuat package yang berbeda dan codinganya seperti ini.
    Contoh Codingan :

package differentPackage;
class DownhillSki1 extends Ski1 {
void tuneup() {
applyWax(); // error
// other tuneup functionality here
}
}

    3) Dan hasil outpunya akan terjadi seperti ini.
Hasil outputnya mengakibatkan terjadi error karena packagenya tersebut saling berbeda.
  C) Method Protected 
  • Protected mempunyai kemampuan akses yang lebih besar daripada private dan default.
  • Protected feature dari suatu class bisa diakses oleh semua class dalam satu package. 
  • Class diluar package boleh melakukan melakukan subclass, dan subclass tersebut bisa mengakses feature superclass.
Contoh Program 1 
      1) Program Pertama saya akan mencoba membuat contoh program protected dan saya akan
          membuat codingan tersebut 
       Contoh Codingan :

package adifferentpackage; // Class Ski now in a different package
class Ski {
protected void applyWax() {}
}

      2) Selanjutnya saya membuat program baru lagi untuk memanggil Ski dan diberi nama
          DownhillSki tetapi saya akan membuat package yang berbeda dan codinganya seperti ini.
      Contoh Codingan :

package sportinggoods;
class DownhillSki extends Ski {
void tuneup() {
applyWax(); // OK
// other tuneup functionality here
}
}

    3) Dan hasil outpunya akan terjadi seperti ini.
Hasil outputnya tersebut bakal akan terjadi seperti ini karena tidak ada perintah system out tersebut. tetapi outputnya tidak ada yang error.

Inheritance : Constructor tidak diwariskan

  •  Konstruktor dari parent class tidak dapat diwariskan ke subclass-nya. 
  • Konsekuensinya, setiap kali kita membuat suatu subclass, maka kita harus memanggil konstruktor parent class di konstruktor subclass. 
  • Pemanggilan konstruktor parent harus dilakukan pada baris pertama dari konstruktor subclass.
  • Jika kita tidak mendeklarasikannya secara eksplisit, maka kompiler Java akan menambahkan deklarasi pemanggilan konstruktor parent class di konstruktor subclass. 
  • Sebelum subclass menjalankan konstruktornya sendiri, subclass akan menjalankan constructor superclass terlebih dahulu.
  • Hal ini terjadi karena secara implisit pada constructor subclass ditambahkan pemanggilan super() yang bertujuan memanggil constructor superclass oleh kompiler.

Contoh Program 1
      1) Program Pertama saya akan mencoba membuat contoh program Constructor tidak diwariskan.
          Saya akan membuat nama program yaitu Parent dan codinganya seperti ini.
       Contoh Codingan :

public class Parent {
    public Parent() {
    }
     
}

      2) Selanjutnya saya membuat program baru lagi untuk memanggil Parent dan diberi nama
          Child dan codinganya seperti ini.
      Contoh Codingan :

public class Child extends Parent {
int x;
    public Child(){
    super();
    x=5;
    } 
}

    3) Dan hasil outpunya akan terjadi seperti ini.
Hasil outputnya tersebut bakal akan terjadi seperti ini karena tidak ada perintah string
dan tidak ada perintah system out tersebut. tetapi outputnya tidak ada yang error.

Inheritance : Keyword Super

  • Kata kunci super dipakai untuk merujuk pada member dari parent class. 
  • Sebagaimana kata kunci this yang dipakai untuk merujuk pada member dari class itu sendiri.
  • Format penulisannya adalah sebagai berikut : 
  • super.data_member : merujuk pada data member pada parent class 
  • super.function_member() : merujuk pada function member pada parent class 
  • super() : merujuk pada konstruktor pada parent class.

Contoh Program 1
      1) Program Pertama saya akan mencoba membuat contoh program Keyword Super.
          Saya akan membuat nama program yaitu Parent sama Child dan codinganya seperti ini.
       Contoh Codingan :

class 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);
                }
}

      2) Selanjutnya saya membuat program baru lagi untuk memanggil Parent dan Child dan diberi
          nama NilaiX dan codinganya seperti ini.
      Contoh Codingan :

public class NilaiX {
public static void main(String args[]) {
Child tes = new Child();
tes.Info(20);
}
}

    3) Dan hasil outpunya akan terjadi seperti ini.

Dan sekian terima kasih......

Komentar

Postingan Populer