Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Menguasai Warisan C#: Konsep, Jenis, dan Kode Praktis

Warisan C# Dijelaskan

Panduan ini mencakup dasar-dasar warisan di C#, berbagai bentuknya, dan contoh kode praktis.

Warisan di C# memungkinkan Anda membuat kelas baru yang diturunkan dari kelas yang sudah ada, membentuk hubungan induk (base) dan anak (derived). Fitur canggih dari Pemrograman Berorientasi Objek (OOP) ini mempromosikan penggunaan kembali kode dan organisasi yang logis.

Kelas base menyediakan field, properti, dan metode yang diwarisi oleh kelas derived, memungkinkan anak untuk memperluas atau menyesuaikan perilaku sambil menjaga logika bersama di satu tempat.


Cara Mendeklarasikan Warisan di C#

Di C#, tanda titik dua (:) menunjukkan warisan:

class Animal { // fields and methods } // Dog inherits from Animal class Dog : Animal { // fields and methods of Animal // fields and methods of Dog }

Di sini, Dog memperluas Animal, mendapatkan akses ke anggotanya. Diagram di bawah ini mengilustrasikan hubungan tersebut.

Menguasai Warisan C#: Konsep, Jenis, dan Kode Praktis

Contoh: Warisan Dasar

using System; namespace Inheritance { // Base class class Animal { public string name; public void Display() { Console.WriteLine("I am an animal"); } } // Derived class class Dog : Animal { public void GetName() { Console.WriteLine("My name is " + name); } } class Program { static void Main(string[] args) { Dog labrador = new Dog(); labrador.name = "Rohu"; labrador.Display(); labrador.GetName(); Console.ReadLine(); } } } 

Output

I am an animal My name is Rohu

Dalam contoh ini, Dog mewarisi field name dan metode Display() dari Animal. Kelas derived juga dapat menambahkan anggotanya sendiri, seperti GetName().


Hubungan "is-a"

Warisan mewakili hubungan "is-a". Gunakan ketika satu kelas secara logis adalah bentuk khusus dari yang lain.

Hubungan ini memalukan menurunkan Dog dari Animal, Apple dari Fruit, dan Car dari Vehicle.


Anggota Protected dalam Warisan

Saat field atau metode dideklarasikan protected, ia dapat diakses di dalam kelasnya sendiri dan semua kelas derived, tetapi disembunyikan dari kode eksternal.

Contoh: Menggunakan Metode Protected

using System; namespace Inheritance { class Animal { protected void Eat() { Console.WriteLine("I can eat"); } } class Dog : Animal { static void Main(string[] args) { Dog labrador = new Dog(); labrador.Eat(); Console.ReadLine(); } } } 

Output

I can eat

Karena Eat() adalah protected, kelas Dog dapat memanggilnya, tetapi kode di luar hierarki tidak dapat.


Jenis Warisan

Warisan manifests in several patterns:

1. Single Inheritance

Satu kelas derived mewarisi dari satu kelas base.

Menguasai Warisan C#: Konsep, Jenis, dan Kode Praktis

2. Multilevel Inheritance

Rantai warisan di mana sebuah kelas mewarisi dari base, lalu kelas lain mewarisi dari derived tersebut.

Menguasai Warisan C#: Konsep, Jenis, dan Kode Praktis

3. Hierarchical Inheritance

Banyak kelas derived berbagi kelas base yang sama.

Menguasai Warisan C#: Konsep, Jenis, dan Kode Praktis

4. Multiple Inheritance

Sementara C# tidak mendukung mewarisi dari banyak kelas, antarmuka menyediakan alternatif fleksibel untuk mencapai perilaku yang serupa.

Menguasai Warisan C#: Konsep, Jenis, dan Kode Praktis

5. Hybrid Inheritance

Kombinasi dari dua atau lebih jenis warisan, seperti multilevel plus hierarchical.

Menguasai Warisan C#: Konsep, Jenis, dan Kode Praktis

Method Overriding

Saat kelas derived mendeklarasikan metode dengan tanda tangan yang sama dengan metode kelas base yang ditandai virtual, metode derived dapat mengoverride-nya menggunakan override. Ini memungkinkan perilaku polymorphic.

using System; namespace Inheritance { class Animal { public virtual void Eat() { Console.WriteLine("I eat food"); } } class Dog : Animal { public override void Eat() { Console.WriteLine("I eat dog food"); } } class Program { static void Main(string[] args) { Dog labrador = new Dog(); labrador.Eat(); } } } 

Output

I eat dog food

Metode Eat() di Dog mengoverride yang ada di Animal. Kata kunci virtual mengizinkan override, sementara override mengisyaratkan substitusi.


Menggunakan Kata Kunci base

Kadang Anda perlu memanggil implementasi kelas base dari metode overriding. Kata kunci base memfasilitasi ini.

Contoh: Memanggil Metode Base

using System; namespace Inheritance { class Animal { public virtual void Eat() { Console.WriteLine("Animals eat food."); } } class Dog : Animal { public override void Eat() { base.Eat(); Console.WriteLine("Dogs eat dog food."); } } class Program { static void Main(string[] args) { Dog labrador = new Dog(); labrador.Eat(); } } } 

Output

Animals eat food. Dogs eat dog food.

Di sini, base.Eat() memanggil implementasi Animal sebelum mengeksekusi logika kelas derived.


Mengapa Warisan Penting di C#

Warisan memungkinkan logika yang dapat digunakan kembali di seluruh kelas yang terkait. Pertimbangkan bentuk geometri di mana perhitungan keliling berbagi rumus umum.

  1. Buat kelas base RegularPolygon dengan metode CalculatePerimeter().
  2. Turunkan Square dan Rectangle darinya, menambahkan properti spesifik seperti Length dan Sides.
  3. Setiap kelas derived juga dapat mengimplementasikan perhitungan luasnya sendiri sambil menggunakan kembali logika keliling.

Contoh Ilustratif

using System; namespace Inheritance { class RegularPolygon { public void CalculatePerimeter(int length, int sides) { int result = length * sides; Console.WriteLine("Perimeter: " + result); } } class Square : RegularPolygon { public int Length = 200; public int Sides = 4; public void CalculateArea() { int area = Length * Length; Console.WriteLine("Area of Square: " + area); } } class Rectangle : RegularPolygon { public int Length = 100; public int Breadth = 200; public int Sides = 4; public void CalculateArea() { int area = Length * Breadth; Console.WriteLine("Area of Rectangle: " + area); } } class Program { static void Main(string[] args) { Square s1 = new Square(); s1.CalculateArea(); s1.CalculatePerimeter(s1.Length, s1.Sides); Rectangle t1 = new Rectangle(); t1.CalculateArea(); t1.CalculatePerimeter(t1.Length, t1.Sides); } } } 

Output

Area of Square: 40000 Perimeter: 800 Area of Rectangle: 20000 Perimeter: 400

Pola ini mengilustrasikan bagaimana warisan mengurangi duplikasi dan meningkatkan kemampuan pemeliharaan.


Bahasa C

  1. Kelas dan Objek C#: Fondasi untuk OOP yang Kuat
  2. Memahami Modifier Akses C#: Public, Private, Protected, Internal, dan Lainnya
  3. Kata Kunci Static C#: Menguasai Variabel, Metode, dan Kelas Statis
  4. Menguasai Kelas dan Metode Abstrak C#: Panduan Praktis
  5. Memahami Kelas Bersarang C#: Definisi, Penggunaan, dan Warisan
  6. Memahami Kelas dan Metode Parsial C#
  7. Menguasai Kelas dan Metode Tersegel di C#—Kapan Menggunakannya, Contoh Jelas, dan Tingkatkan Keamanan serta Performa Kode
  8. Memahami Polimorfisme C++: Panduan Praktis
  9. Menguasai Abstraksi Data C++: Sederhanakan Desain dengan Pemisahan Antarmuka-Implementasi
  10. Memahami Struktur Program C#: Komponen Inti dan Contoh