Base Class 'object'
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 23 dari 70.
Dalam C#, setiap class yang kamu buat otomatis mewarisi class khusus bernama object. Meskipun kamu tidak secara eksplisit menentukan class dasar, class-mu tetap memiliki object sebagai leluhur tertingginya. Artinya, setiap tipe di C# memiliki sekumpulan method yang sama.
class object menyediakan beberapa method virtual yang bisa kamu override di class-mu sendiri:
public class Person
{
public string Name { get; set; }
// Override dari object
public override string ToString()
{
return $"Person: {Name}";
}
public override bool Equals(object obj)
{
if (obj is Person other)
return Name == other.Name;
return false;
}
public override int GetHashCode()
{
return Name?.GetHashCode() ?? 0;
}
}Tiga method yang paling sering di-override adalah ToString() untuk representasi string, Equals() untuk membandingkan object, dan GetHashCode() untuk koleksi berbasis hash. Secara default, ToString() mengembalikan nama tipe, dan Equals() memeriksa kesamaan referensi.
Karena semuanya mewarisi object, kamu bisa menyimpan tipe apa pun dalam variabel object:
object item1 = new Person { Name = "Alice" };
object item2 = 42;
object item3 = "Hello";
Console.WriteLine(item1.ToString()); // Person: AliceBase class universal ini memungkinkan fitur seperti collection yang menyimpan berbagai tipe, dan itulah sebabnya setiap object di C# dapat mengakses method seperti ToString() dan GetType().
Tantangan
MudahMari kita buat sistem perbandingan buku yang menunjukkan bagaimana overriding method dari base class object memberikan perilaku yang bermakna pada tipe kustommu untuk representasi string dan pemeriksaan kesetaraan.
Kamu akan membuat dua file untuk mengatur kodemu:
Book.cs: Definisikan classBookdi namespaceLibrary. Buku kamu harus memiliki propertyTitle(string) danAuthor(string), serta constructor yang menetapkan kedua nilai tersebut. Override tiga method utama yang diwarisi dariobject:ToString()harus mengembalikan"{Title} by {Author}"Equals(object obj)harus mengembalikantruejika object lain adalahBookdenganTitledanAuthoryang samaGetHashCode()harus menggabungkan kode hash dari kedua property
Program.cs: Di file utama, buat dua buku menggunakan nilai input. Tampilkan setiap buku menggunakanToString(), lalu periksa apakah keduanya sama dan cetak hasilnya. Terakhir, tunjukkan bahwa kamu dapat menyimpanBookdalam variabelobjectdan tetap mendapatkan output yang bermakna saat memanggilToString().
Kamu akan menerima empat input:
- Judul buku pertama
- Penulis buku pertama
- Judul buku kedua
- Penulis buku kedua
Cetak output dalam format ini:
Book 1: {ToString result}
Book 2: {ToString result}
Are they equal? {True/False}
Stored as object: {ToString result of first book stored in object variable}Misalnya, jika inputnya adalah 1984, George Orwell, 1984, dan George Orwell, outputnya harus berupa:
Book 1: 1984 by George Orwell
Book 2: 1984 by George Orwell
Are they equal? True
Stored as object: 1984 by George OrwellJika inputnya adalah 1984, George Orwell, Brave New World, dan Aldous Huxley, outputnya harus berupa:
Book 1: 1984 by George Orwell
Book 2: Brave New World by Aldous Huxley
Are they equal? False
Stored as object: 1984 by George OrwellPerhatikan bagaimana method yang kamu override memberikan perilaku bermakna pada object Book: object tersebut ditampilkan dengan baik sebagai string dan dapat dibandingkan berdasarkan isinya, bukan hanya berdasarkan referensi memorinya!
Coba sendiri
using System;
using Library;
class Program
{
public static void Main(string[] args)
{
// Baca input untuk dua buku
string title1 = Console.ReadLine();
string author1 = Console.ReadLine();
string title2 = Console.ReadLine();
string author2 = Console.ReadLine();
// TODO: Buat dua object Book menggunakan nilai input
// TODO: Cetak Book 1 menggunakan ToString()
// Format: "Book 1: {ToString result}"
// TODO: Cetak Book 2 menggunakan ToString()
// Format: "Book 2: {ToString result}"
// TODO: Periksa apakah kedua buku sama dan cetak hasilnya
// Format: "Are they equal? {True/False}"
// TODO: Simpan buku pertama dalam variabel object dan cetak
// Format: "Stored as object: {ToString result}"
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalNamespace & DirektifPengantar class & objectKata Kunci 'this'Method dan ParameterField vs PropertyKonstruktorInisialisasi objectRingkasan: Kalkulator Sederhana4Pewarisan
Sintaks Dasar Pewarisan (:)Kata Kunci 'base'Kata Kunci Virtual & OverrideClass SealedBase Class 'object'Rangkuman: Hierarki Karyawan7Fitur Lanjutan
Overloading OperatorIndexer (this[])Penimpaan ToString()Extension methodRingkasan: Custom list2Property & Anggota Statis
Property yang Diimplementasikan OtomatisProperty Hanya Baca dan Hanya TulisField dan method StatisClass StatisAnggota Berbentuk Ekspresi5Polimorfisme & Antarmuka
Polimorfisme saat kompilasi vs runtimeAntarmuka vs kelas abstrakBeberapa antarmukaAntarmuka eksplisitUpcasting & DowncastingRingkasan, Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi daripada PewarisanGenerics (class dan method)Delegate dan EventAtribut dan ReflectionIDisposable dan Pernyataan usingDasar-Dasar Dependency Injection11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola CompositeLatihan sendiri: Compiler C# online