Extends, Super, This pada JAVA

Extends Class
Extends class adalah class yang mewarisi sifat dari sifat-sifat yang dimiliki oleh superclass. disini class ini disebut juga sub-class dari superclass. untuk lebih jelasnya silahkan liat contoh, sebelumnya saya menggunakan NetBeans IDE 8.0.2

contohnya mobil.java



setelah itu kita membuat mobilTamiya.java dengan bersumber kepada mobil.java




Jika sudah tinggal dirun saja maka hasilnya akan seperti ini

Super Class
Subclass juga dapat memanggil constructor secara eksplisit dari superclass terdekat. Hal ini 
dilakukan  dengan  pemanggil  construktor  super.  Pemanggil  constructor  super  dalam 
constructor  dari  subclass  akan  menghasilkan  eksekusi  dari  superclass  constructor  yang 
bersangkutan, berdasar dari argumen sebelumnya. 
Jika sebuah method mengoverride satu dari method superclass, kita bisa menggunakan method yang dioverride tsb melalui penggunaan keyword super. Kita juga dapat menggunakan keyword super utk menunjuk terhadap sebuah field yang tersembunyi (meskipun field tersembunyi tsb dikucilkan).

Contoh:
public class Superclass {
public void printMethod() {
System.out.println(“Print di Superclass”);
}
}
Dibawah ini adalah sebuah subclass yang mengoverride printMethod();
public class Subclass extends Superclass {
public void printMethod() { //mengoverride printMethod() pada Superclass
super.printhMethod();
System.out.println(“Print di Subclass”);
}
public static void main(String[] args) {
Subclass s = new Subclass(0;
s.printMethod();
}
}
Variabel super digunakan dalam kelas turunan. Variabel super mengacu pada objek di mana method tersebut berada, akan tetapi ia merupakan bagian dari kelas super dari objek tersebut. Suatu kelas bisa ditambah atau dimodifikasi dari kelas turunannya. Variabel super  hanya mengacu pada bagian objek sebelum ia ditambah atau dimodifikasi, atau dengan kata lain bentuk aslinya sebelum dia diturunkan, yang dalam hal ini sama dengan kelas supernya.
Misalnya kita akan menulis suatu kelas, dan kelas tersebut memiliki method instansi bernama suatuMethod(). Pernyataan super.suatuMethod() berarti menjalankan suatuMethod() pada kelas supernya. Jika tidak ada metode suatuMethod() pada kelas supernya, Java akan menampilkan pesan kesalahan sintaks.

Alasan mengapa Java memiliki variabel super  adalah karena banyak hal yang mungkin tersembunyi pada kelas turunan. Misalnya karena kita mengimplementasikan fungsi lain pada kelas turunan dengan nama yang sama (dalam kaitannya dengan polimorfisme, misalkan).
Ketika kita membuat method baru pada kelas turunan yang memiliki nama dan jenis parameter yang sama dengan method pada kelas supernya, method dari kelas super akan disembunyukan. Dalam bahasa pemrograman, method ini menimpa (override) method dari kelas supernya. Variabel super bisa digunakan untuk mengakses method aslinya yang didefinisikan di kelas supernya.
Kegunaan utama dari super biasanya untuk memperluas kegunaan method yang sudah ada, bukan menggantinya secara keseluuruhan. Method baru bisa menggunakan super untuk menjalankan instruksi pada kelas supernya, kemudian menambahkan instruksi lain pada kelas turunannya.

Misalnya, kita memiliki kelas PasanganDadu yang memiliki method kocok. Kemudian kita akan membuat kelas turunan yaitu DaduGrafis yang berfungsi untuk menggambar dadu pada layar. Method kocok() dalam DaduGrafis harus melakukan apa yang dilakukan oleh PasanganDadu, dengan tambahan perintah untuk menggambar dadu tersebut di layar. Kita bisa tulis definisi kelas DaduGrafis dalam bentuk :
public class DaduGrafis extends PasanganDadu {
public void kocok() {
// Mengocok dadu, kemudian menggambarnya di layar
super.kocok();  // Panggil metode kocok() di kelas PasanganDadu
gambar();      // Gambar ulang dadu
}
.
.  // Metode dan variabel lain, termasuk metode gambar()
.
}
Dengan cara ini kita bisa memperluas apa yang dilakukan oleh method kocok() pada kelas supernya tanpa mengetahui dengan detail apa yang dilakukan langkah per langkah di kelas supernya
Konstuktor pada Kelas Turunan
Konstruktor tidak bisa diturunkan, artinya jika kita membuat kelas turunan dari suatu kelas, konstruktor pada kelas supernya tidak termasuk bagian yang diturunkan. Jika kita ingin konstruktor tersebut pada kelas turunannya, maka kita harus membuat kembali konstruktor tersebut di kelas yang baru. Jika tidak, maka Java akan membuat konstruktor standar tanpa parameter apa-apa.
Hal ini mungkin menjadi masalah jika konstruktor pada kelas supernya melakukan banyak tugas. Artinya kita harus mengulang kembali menuliskan semua instruksi pada kelas supernya di kelas turunan yang baru. Masalahnya akan lebih rumit jika kita tidak mengetahui sama sekali apa yang dilakukan kelas supernya, misalnya apabila tidak ada kode sumbernya.
Cara yang paling mudah adalah menggunakan super. Di baris pertama konstruktor baru kita di kelas turunannya, kita bisa menggunakan super untuk memanggil konstruktor kelas supernya. Sintaksnya sedikit aneh dan membingungkan, dan hanya bisa digunakan untuk satu situasi saja : Sintaksnya mirip seperti memanggil subrutin super (meskipun sebenarnya super bukan subrutin dan kita tidak bisa memanggil konstruktor seperti kita memanggil subrutin biasa).
Misalnya kelas PasanganDadu memiliki konstruktor yang memiliki dua parameter bertipe int. Maka kita bisa membuat konstruktor pada kelas DaduGrafis seperti :
public class DaduGrafis extends PasanganDadu {
public DaduGrafis() {  // Konstruktor kelas ini
super(3,4);  // Panggil konstruktor dari kelas PasanganDadu
// dengan parameter 3 dan 4
inisialisasiGrafis();  // Lakukan inisialisasi grafis
// untuk digunakan pada kelas DaduGrafis
}
.
.  // Konstruktor, variabel dan metode instansi lain
.
}

THIS

Kata kunci this dipergunakan pada pembuatan kelas dan digunakan untuk menyatakan objek sekarang. Untuk menghindari variabel yang sama antara variabel class dengan variabel property.

Contoh:

class murid{
String nama;
String alamat;

void isiData ( String nama,String alamat) {
this.nama=nama;
this.alamat=alamat;
}

public static void main ( String [ ] args){
murid mahasiswa_itn = new murid ( );

mahasiswa_itn.isiData ("Budi","Jalan Cemara");

System.out.println( "Nama : "+ mahasiswa_itn.nama);
System.out.println( "Alamat : " + mahasiswa_itn.alamat);
}
}





Comments