Kelas Object
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 24 dari 87.
Di Java, setiap class yang kamu buat otomatis mewarisi class khusus bernama Object. Meskipun kamu tidak menulis extends di mana pun, class-mu tetap merupakan turunan dari Object. Ini menjadikan Object sebagai akar dari seluruh hierarki class.
public class Person {
// Ini secara implisit mewarisi Object
}
// Setara dengan:
public class Person extends Object {
}Karena setiap class mewarisi dari Object, setiap object di Java dapat menggunakan beberapa method bawaan. Method yang paling umum digunakan meliputi:
| Method | Tujuan |
|---|---|
toString() | Mengembalikan representasi string dari object |
equals(Object obj) | Membandingkan kesetaraan dua object |
hashCode() | Mengembalikan nilai kode hash untuk object |
getClass() | Mengembalikan class saat runtime dari object |
Secara default, method ini memiliki implementasi generik. Misalnya, toString() mengembalikan nama class diikuti @ dan kode hash object dalam heksadesimal, yang tidak terlalu berguna:
Person p = new Person();
System.out.println(p.toString()); // output: Person@1a2b3c4dInilah alasan kamu sering meng-override method ini di class buatanmu sendiri untuk memberikan perilaku yang bermakna. Memahami bahwa Object adalah parent universal membantu menjelaskan mengapa kamu dapat menyimpan object apa pun dalam variabel Object dan mengapa method tertentu tersedia pada setiap object yang kamu buat.
Tantangan
MudahMari kita pelajari bagaimana class Object berperan sebagai induk universal semua class Java dengan membuat sistem inventaris gadget sederhana yang menunjukkan method turunan dari Object.
Kamu akan membuat tiga file untuk mengatur kodemu:
Gadget.java: Buat class yang merepresentasikan gadget elektronik. Class-mu harus memiliki:- Field private untuk
name(String) danyear(int) - Konstruktor yang menginisialisasi kedua field
- Method getter
getName()dangetYear()
- Field private untuk
Smartphone.java: Buat subclass yang mewarisi Gadget dan menambahkan fitur khusus smartphone:- Field private untuk
brand(String) - Konstruktor yang menerima name, year, dan brand. Gunakan
super(name, year)untuk bagian induk - Method
getBrand()yang mengembalikan brand - Override method
toString()agar mengembalikan:Smartphone: [brand] [name] ([year])
- Field private untuk
Main.java: Tunjukkan perbedaan antara methodObjectdefault dan yang di-override. Kamu akan menerima tiga input: nama gadget, year, dan brand. BuatGadgetdanSmartphonedengan name dan year yang sama (serta brand untuk smartphone), lalu:- Cetak nama class gadget menggunakan
getClass().getSimpleName() - Cetak apakah
toString()default gadget berisi simbol "@" (cetaktrueataufalse) - Cetak smartphone menggunakan
toString()yang sudah di-override
- Cetak nama class gadget menggunakan
Kamu akan menerima tiga input: nama gadget/smartphone (String), year (int), dan brand (String).
Tantangan ini menunjukkan mengapa meng-override method Object itu penting. toString() default memberi kamu sesuatu seperti Gadget@1a2b3c, sedangkan versi kustommu memberikan informasi yang bermakna!
Coba sendiri
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Baca input
String name = scanner.nextLine();
int year = scanner.nextInt();
scanner.nextLine(); // habiskan karakter baris baru
String brand = scanner.nextLine();
// TODO: Buat object Gadget dengan name dan year
// TODO: Buat object Smartphone dengan name, year, dan brand
// TODO: Cetak nama class gadget menggunakan getClass().getSimpleName()
// TODO: Cetak apakah toString() milik gadget berisi "@" (true atau false)
// TODO: Cetak smartphone (menggunakan toString() yang ditimpa)
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPClass dan ObjectKata Kunci thisMethodField (Atribut)Method KonstruktorOverloading KonstruktorRangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan Dasar (extends)Kata Kunci superMethod Overriding (@Override)Rantai KonstruktorKelas ObjectPewarisan Tunggal dan BertingkatMengapa Tidak Ada Pewarisan Multi-KelasRangkuman: Hierarki Karyawan7method Khusus & class Object
method toString()equals() dan hashCode()method clone()compareTo() dan ComparableAntarmuka ComparatorUlasan: Pengurutan Kustom10Penanganan Exception dalam OOP
Hierarki class ExceptionException KustomError Checked vs UncheckedPola Try-with-ResourcesRekap: Pengguna Tervalidasi2Modifier Akses & Enkapsulasi
Ikhtisar Tingkat AksesMethod Getter dan SetterPenyembunyian InformasiKata Kunci finalUlasan: Pengelola Rekening Bank5Polimorfisme
Dasar method overloadingMethod overriding (Saat program berjalan)Upcasting dan downcastingOperator instanceofclass dan method abstrakUlasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanAgregasi vs Komposisiinner, nested, dan anonymous classEnum dan method Enumrecord (Java 16+)sealed class (Java 17+)11Pola Desain Bagian 1
Pengantar Pola DesainPola SingletonPola FactoryPola BuilderPola ObserverPola Strategy3property class dan Anggota Statis
Variabel Instance vs Statismethod StatisBlok StatisKonstanta (static final)Rangkuman: Penghitung dan Utilitas6Antarmuka & Kelas Abstrak
Pengantar AntarmukaMengimplementasikan AntarmukaImplementasi Beberapa AntarmukaDefault & Static pada AntarmukaKelas Abstrak vs AntarmukaAntarmuka FungsionalRekap: Sistem PembayaranLatihan sendiri: Compiler Java online