Menu
CoddyTech

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: Alice

Base 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().

challenge icon

Tantangan

Mudah

Mari 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 class Book di namespace Library. Buku kamu harus memiliki property Title (string) dan Author (string), serta constructor yang menetapkan kedua nilai tersebut. Override tiga method utama yang diwarisi dari object:
    • ToString() harus mengembalikan "{Title} by {Author}"
    • Equals(object obj) harus mengembalikan true jika object lain adalah Book dengan Title dan Author yang sama
    • GetHashCode() harus menggabungkan kode hash dari kedua property
  • Program.cs: Di file utama, buat dua buku menggunakan nilai input. Tampilkan setiap buku menggunakan ToString(), lalu periksa apakah keduanya sama dan cetak hasilnya. Terakhir, tunjukkan bahwa kamu dapat menyimpan Book dalam variabel object dan tetap mendapatkan output yang bermakna saat memanggil ToString().

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 Orwell

Jika 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 Orwell

Perhatikan 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}"
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler C# online