Langsung ke konten utama

Belajar Java OOP: Apa fungsi 'this' dan 'super' pada Java?

Belajar Java OOP: Apa fungsi 'this' dan 'super' pada Java?


 
Java This Super
Kata kunci this dan super sering muncul dalam program Java.
Apa sih fungsinya?
Pada kesempatan ini, kita akan membahasnya…
Pastikan kamu sudah membaca tutorial Java OOP: Inheritance.
Karena sangat berkaitan dengan pembahasan kita di sini.
Baiklah.
Mari kiat mulai…

Fungsi this pada Java

Pada tutorial sebelumnya, kita sudah belajar tentang method setter dan getter.
Di sana kita menggunakan kata kunci this untuk mengisi variabel.
Contoh:
class User {
    private String username;
    private String password;

    // ini method setter
    public void setUsername(String username){
        this.username = username;
    }

    public void setPassword(String password){
        this.password = password;
    }

    // ini method getter
    public String getUsername(){
        return this.username;
    }

    public String getPassword(){
        return this.password;
    }
}
Lihat! this kita gunakan di setiap method.
Coba perhatikan salah satu method:
public void setUsername(String username){
    this.username = username;
}
Bagaimana kalau kita hapus this pada method ini?
public void setUsername(String username){
    username = username;
}
Apa yang akan terjadi?
Yak! komputer akan bingung…
Karena tidak tahu variabel username yang mana yang dimaksud.
Apakah variabel yang di class (private String username) ataukah variabel username yang ada di dalam parameter.
Method tanpa this
Jika kita sentuh balon peringatan di samping, maka kita akan mendapatkan pesan: “Assignment To Itself”.
Self Assignment
Ini artinya variabel tersebut mengisi dirinya sendiri.
Karena itu, kita harus menggunakan this untuk menyatakan variabel yang dimaksud adalah variabel yang ada di dalam class.
public void setUsername(String username){
    this.username = username;
}
Jadi…
Kata kunci this digunakan sebagai referensi dari class itu sendiri.
Masih bingung?
Oke, kalau begitu… setiap menemukan this coba gunakan pandangan ini:
this artinya class itu sendiri.
Misalnya ada class lagi:
class Person {
    private String name;

    public void setName(String name){
        this.name = name;
    }
}
Maka this yang dimaksud pada class tersebut adalah class Person.
Apakah kita bisa menggunakan this di luar class?
Tidak.
this hanya bisa digunakan di dalam class saja.
Coba saja buat fungsi main() lalu gunakan this di sana. Maka yang akan terjadi adalah…
Kata kunci this pada main
Yak! programnya akan error.
Karena variabel yang kita coba akses dari main() adalah variabel yang non-statis.
…dan this tidak bisa digunakan pada main().

Fungsi super pada Java

Jika this merepresentasikan objek dari class itu sendiri, maka super akan merepresentasikan objek dari class induk.
Perhatikan contoh ini:
Kita mencoba memubuat class Person yang akan menjadi class induk atau super class.
public class Person {
    String name = "Petanikode";
    int age = 22;
}
Lalu, kita buat class turunannya (sub class), yaitu: class Employee.
public class Employee extends Person {
    
    float salary = 4000f;
    String name = "Dian";
    int age = 23;
      
    public void showInfo(){
        System.out.println("Name: " + super.name);
        System.out.println("Age: " + super.age);
        System.out.println("Salary: $" + salary);
    }
}
Berikutnya kita membuat class Demo untuk membuat objek dan method main().
public class Demo {
    public static void main(String[] args) {
        Employee dian = new Employee("Dian", 23, 4000f);
        
        dian.showInfo();
    }
}
Sekarang coba eksekusi class Demo, apa hasil outputnya?
Program dengan kata kunci parent
Mengapa hasil outputnya begini?
Karena pada method showInfo() kita menggunakan kata kunci super untuk mengambil nilai dari variabel yang ada di dalam class induk (super class).
public void showInfo(){
    System.out.println("Name: " + super.name);
    System.out.println("Age: " + super.age);
    System.out.println("Salary: $" + salary);
}
Coba ganti super menjadi this
public void showInfo(){
    System.out.println("Name: " + this.name);
    System.out.println("Age: " + this.age);
    System.out.println("Salary: $" + salary);
}
…maka hasil outputnya akan seperti ini.
Program dengan kata kunci parent dan this
Nilai yang diambil adalah nilai yang dari class Employee, karena this mewakili class Employee sedangkan super mewakili kelas induknya, yaitu: Person.
Pada kasus ini, kita menggunakan super sebagai sebuah objek untuk mengambil nilai.
Kata kunci super() juga dapat digunakan untuk memanggil method ternetu dari kelas induk.
Contoh:
// mengeksekusi konstruktor induk
super();

// mengeksekusi sebuah method dari class induk
super.namaMethod();
Mari kita coba…
Kita ubah class Person menjadi seperti ini:
public class Person {

    public Person() {
        System.out.println("Eksekusi konstruktor Person()");
    }
    
    public void showMessage(){
        System.out.println("Hello, ini pesan dari class Person...");
    }
}
Kemudian class Employee kita ubah menjadi seperti ini:
public class Employee extends Person {

    public Employee() {
        // eksekusi konstruktor induk
        super();
        
        System.out.println("Ekekusi konstruktor Employee()");
    }
    
    public void info(){
        super.showMessage();
    }
}
Lalu di class Demo, kita ubah menjadi seperti ini:
public class Demo {
    public static void main(String[] args) {
        Employee dian = new Employee();
        
        dian.info();
    }
}
Sekarang coba eksekusi class Demo, maka hasil outputnya akan seperti ini:
Memanggil metho super
Perhatikan class Employee, pada konstruktornya kita mengeksekusi konstruktor induk dengan super().
Lalu, pada method info(), ktai mengeksekusi method showMessage() dari induk dengan super.showMessage().
Maka hasilnya, akan seperti di atas.

Bagaimana Penerapan this dan super pada Dunia Nyata?

Contoh-contoh di atas mungkint terdengar abstrak, karena tidak mungkin kita membuat program seperti itu di dunia nyata.
Baik, kita akan coba melihat beberapa contoh program di dunia nyata yang menggunakan this dan super.
import javax.swing.JFrame;

public class MainWindow extends JFrame {

    public MainWindow(){
        this.setTitle("Jendela Utama");
        this.setSize(600,320);
    }
    
    public static void main(String[] args) {
        MainWindow mWindow = new MainWindow();
        mWindow.setVisible(true);
    }
}    
Pada program tersebut, kita membuat class MainWindow dengan meng-extends dari class JFrame.
Pada program ini, this digunakan untuk mewakili class MainWindow di dalam konstruktornya.
public MainWindow(){
    this.setTitle("Jendela Utama");
    this.setSize(600,320);
}
Method setTitle() dan setSize() didapatkan dari class Induk (JFrame). Karena kita meng-extends dari sana.
Mengapa tidak menggunakan super?
Karena yang ingin kita ubah title dan size-nya adalah class MainWindow, bukan class JFrame.
Kedua, coba perhatikan class MainActivity pada Android.
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toast.makeText(this, "Activity: onCreate()", Toast.LENGTH_SHORT).show();
    }
}
Perhatikan…
Pada class MainActivity, kita menggunakan super untuk memanggil method onCreate() dari class induk (AppCompatActivity).
super.onCreate(savedInstanceState);
Kemudian kita gunakan this pada Toast.makeText()this pada kasus ini akan mewakili class MainActivity.
Masih banyak lagi contoh-contoh penggunaan this dan super pada dunia nyata.
Silahkan kalian cari sendiri… ✌

Apa Selanjutnya?

Intinya…
Yang perlu kita pahami dalam this dan super adalah:
  • this: objek yang mewakili class itu sendiri;
  • super: objek yang mewakili class induk (super class).
Selanjutnya, silahkan pelajari tentang polimorfisme dan method overloading pada Java.

Komentar

Postingan populer dari blog ini

PROSEDUR PEMBUATAN INDIKATOR

PROSEDUR PEMBUATAN INDIKATOR 1. EBT (ERIOCROM BLACK T) Timbang 100 mg serbuk zat warna EBT ,10 gram Kristal NaCl atau Kristal Na2SO4 an hidrat. Kedua zat tersebut dicampur dengan cara menggerus didalam mortar sampai halus dan merata. Penggunaannya 100 mg (seujung spatel ) untuk satu kali titrasi. 2. Merah metil Larutkan 25 mg metil P dengan 0,95 ml larutan Natrium hidroksida 0,05 N dan 5 ml etanol 95 % setelah larut sempurna, tambahkan etanol 50 % secukupnya hingga 250,0 ml 3. Jingga metil Larutkan jingga metil P 0,04 % b/v dalam etanol 20 % 4. BTB Larutkan 100 mg biru brom timol P dengan 3,2 ml Natrium Hidroksida 0,05 N dan 5 ml etanol 90 % ,setelah larut sempurna tambahkan etanol 20 % secukupnya hingga 250,0 ml. 5. MUREXIDE Haluskan 100 mg serbuk murexide dengan 10 gram KNO3 atau 10 gram NaCl . Pada pemakaiannya 100 gram serbuk murexide tiap volume 150 sampai 200 ml. 6. Larutan indicator Fenolftalein 0,035 %. Timbang ± 0,035 gram Fenolftalein ,lar

LARUTAN PADA KIMIA ANALITIK KUANTITATIF

LARUTAN PADA KIMIA ANALITIK KUANTITATIF 1.        LARUTAN NaOH 0,1  N                 4 gram NaOH dalam 1 Liter 2.        LARUTAN HCl 0,1 N HCl pekat = 37% HCl pekat = 12 M = 12 N                 8,33 mL HCl pekat = 1 Liter 0,1 N 3.        LARUTAN H 2 SO 4 0,1 N H 2 SO 4 pekat = 96 % H 2 SO 4 pekat = 17,63 M = 18 M = 36 N        2,78 mL H 2 SO 4 pekat = 1 liter 0,1 N 4.        LARUTAN CH 3 COOH 0,1 N CH 3 COOH pekat = 99,5 % CH 3 COOH pekat = 17 M = 17 N        5,88 mL CH 3 COOHpekat = 1 liter 0,1 N 5.        LARUTAN Na 2 S 2 O 3 0,1 N             26 gram Na 2 S 2 O 3 dengan 0,2   g Na 2 CO 3 dilarutkan dalam air bebas CO 2 segar sampai volume 1000 ml 6.        LARUTAN KIO 3 0,1 N             3 , 5 g KIO 3 encerkan dengan air hingga 1000 m L 7.        LARUTAN KMnO 4 0,1 N      3,3 gram Kalium Permanganat P adat dilarutkan dalan air hingga 1000 ml 8.        LARUTAN IODIUM (I 2 ) 0,1 N 12,69 gram I 2 P adat ke dalam la

C++ #03 Mengenal Fungsi Input dan Output

Belajar C++ #03: Mengenal Fungsi Input dan Output pada C++ #  C++ Pada dasarnya, program komputer hanya terdiri dari tiga bagian: Input  adalah sesuatu data yang kita masukan ke dalam program. Input biasanya diambil dari perangakat inputan seperti keyboard, mouse, kamera, microphone, dll. Proses  adalah langkah-langkah yang harus dilakukan program untuk menghasilkan output. Output  adalah informasi yang dihasilkan setelah dilakukan proses. Output biasanya ditampilkan ke layar komputer. Pada bahasa pemrograman C++, terdapat beberapa fungsi dasar untuk menampilkan output dan mengambil input. Apa saja itu? Mari kita bahas… Fungsi Output pada C++ C++ memiliki empat fungsi dasar untuk menampilkan output: cout  untuk menampilkan teks ke layar; cerr  untuk menampilkan error; clog  untuk menampilkan log; printf()  untuk menampilkan output, fungsi ini dari C; Kita akan fokus memabahas yang dua saja, yakni  cout  dan  printf() . Soalnya  cerr  dan  clog