Belajar Java OOP: Apa fungsi ‘this’ dan ‘super’ pada Java?
Kata kunci this
dan super
sering muncul dalam program Java.
Apa sih fungsinya?
Nah, pada kesempatan ini, kita akan membahasnya. Namun sebelum itu, 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.
Jika kita sentuh balon peringatan di samping, maka kita akan mendapatkan pesan: “Assignment To Itself”.
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…
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?
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.
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 tertentu 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:
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
.
Pertama, coba perhatikan program untuk membuat GUI pada tutorial JFrame.
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();
}
}
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.
Silakan kalian cari sendiri dan pelajari lebih lanjut pemrograman Java pada artikel berikut!
Baca juga: Belajar Java OOP: Memahami Prinsip Polimorfisme dalam OOP | Tutorial Java OOP: Memahami Interface di Java (dan Contohnya) | Tutorial Java OOP: Mengenal Class Abstrak dan Cara Pakainya
Recent Post
-
Software House Indonesia untuk Bisnis Anda
-
5 Alasan Utama Memilih Software House untuk Pengembangan Web App
-
Peran Software House dalam Mendorong Transformasi Digital Perusahaan di Era Modern
-
10 Software House Terpercaya di Indonesia untuk Solusi Digital Bisnis Anda
-
Mengapa Software House Penting untuk Bisnis yang Ingin Go Digital?
-
Keunggulan Software House dalam Pengembangan Website Custom untuk Bisnis
-
Mengenal Software House: Layanan Lengkap untuk Bisnis Digital Anda
-
Mengapa Keamanan Web App Sangat Penting dan Bagaimana Memilih Software House yang Tepat
Tags
Read More
Software House Indonesia untuk Bisnis Anda
Muhamad Dzaky 18/11/2024 0Dalam era digital yang serba cepat, setiap bisnis membutuhkan solusi teknologi yang tepat untuk tetap relevan dan kompetitif. Software house hadir sebagai mitra utama untuk…
5 Alasan Utama Memilih Software House untuk Pengembangan Web App
Muhamad Dzaky 16/11/2024 0Dalam era digital saat ini, kebutuhan akan aplikasi berbasis web (web app) semakin meningkat. Bisnis…
Peran Software House dalam Mendorong Transformasi Digital Perusahaan di Era Modern
Muhamad Dzaky 15/11/2024 0Di era modern yang ditandai dengan perkembangan teknologi yang pesat, transformasi digital menjadi kebutuhan mendesak…
10 Software House Terpercaya di Indonesia untuk Solusi Digital Bisnis Anda
Muhamad Dzaky 14/11/2024 0Di era digital ini, keberadaan software house menjadi penting untuk membantu bisnis beradaptasi dengan perkembangan…
Mengapa Software House Penting untuk Bisnis yang Ingin Go Digital?
Muhamad Dzaky 13/11/2024 0Di era digital seperti sekarang, kehadiran teknologi dalam dunia bisnis tidak bisa diabaikan. Setiap bisnis…