Kata Kunci 'base'
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 20 dari 70.
Saat derived class mewarisi base class, kamu sering perlu mengakses anggota parent secara langsung. Kata kunci base menyediakan hubungan ini, sehingga kamu dapat memanggil constructor base class atau mengakses method dan property-nya.
Penggunaan base yang paling umum adalah memanggil konstruktor induk. Saat membuat object turunan, kamu dapat meneruskan nilai ke class dasar:
public class Animal
{
public string Name { get; set; }
public Animal(string name)
{
Name = name;
}
}
public class Dog : Animal
{
public string Breed { get; set; }
public Dog(string name, string breed) : base(name)
{
Breed = breed;
}
}Sintaks : base(name) memanggil konstruktor Animal sebelum badan konstruktor Dog dijalankan. Ini memastikan class dasar diinisialisasi dengan benar terlebih dahulu.
Kamu juga bisa menggunakan base untuk memanggil method induk dari dalam class turunan:
public class Animal
{
public void Speak()
{
Console.WriteLine("Animal sound");
}
}
public class Dog : Animal
{
public void Speak()
{
base.Speak(); // Memanggil method Speak milik Animal
Console.WriteLine("Woof!");
}
}Di sini, base.Speak() secara eksplisit memanggil versi method milik induknya. Ini berguna saat kamu ingin memperluas perilaku induknya, bukan menggantinya sepenuhnya.
Tantangan
MudahMari buat sistem inventaris produk yang menunjukkan cara derived class menggunakan kata kunci base untuk menginisialisasi parent class dengan benar dan memperluas perilaku yang diwarisi.
Kamu akan membuat tiga file untuk mengatur kodemu:
Product.cs: Definisikan classProductdi namespaceInventory. Base class ini mewakili produk apa pun dengan propertyName(string) dan propertyPrice(decimal). Sertakan constructor yang menerima kedua nilai tersebut dan methodGetInfo()yang mengembalikan"{Name}: ${Price}".ElectronicProduct.cs: Definisikan classElectronicProductdi namespaceInventoryyang mewarisiProduct. Class ini menambahkan propertyWarrantyMonths(int). Constructor harus menerima nama, harga, dan jumlah bulan garansi. Gunakanbaseuntuk meneruskan nama dan harga ke constructor parent. Buat methodGetInfo()yang pertama-tama memanggilGetInfo()milik parent menggunakanbase, lalu menambahkan" (Warranty: {WarrantyMonths} months)"untuk memperluas output.Program.cs: Di file utama, buatElectronicProductmenggunakan nilai input dan tampilkan informasi lengkapnya dengan memanggilGetInfo().
Kamu akan menerima tiga input:
- Nama produk
- Harga
- Jumlah bulan garansi
Cetak hasil pemanggilan GetInfo() pada produk elektronikmu.
Contohnya, jika inputnya adalah Laptop, 999.99, dan 24, outputnya adalah:
Laptop: $999.99 (Warranty: 24 months)Perhatikan cara derived class membangun berdasarkan output base class, alih-alih menduplikasi logikanya. Kata kunci base memungkinkan kamu menggunakan kembali dan memperluas perilaku parent dengan mudah!
Coba sendiri
using System;
using Inventory;
class Program
{
public static void Main(string[] args)
{
// Baca input
string name = Console.ReadLine();
decimal price = Convert.ToDecimal(Console.ReadLine());
int warrantyMonths = Convert.ToInt32(Console.ReadLine());
// TODO: Buat ElectronicProduct dengan nilai input
// TODO: Cetak hasil pemanggilan GetInfo() pada produk elektronikmu
}
}
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