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

C# Warisan

C# Warisan

Dalam tutorial ini, kita akan belajar tentang pewarisan C# dan jenisnya dengan bantuan contoh.

Dalam C#, pewarisan memungkinkan kita untuk membuat kelas baru dari kelas yang sudah ada. Ini adalah fitur utama Pemrograman Berorientasi Objek (OOP).

Kelas dari mana kelas baru dibuat dikenal sebagai kelas dasar (induk atau superclass). Dan, kelas baru disebut kelas turunan (anak atau subkelas)

Kelas turunan mewarisi bidang dan metode kelas dasar. Ini membantu penggunaan kembali kode di C#.


Bagaimana cara melakukan pewarisan dalam C#?

Dalam C#, kami menggunakan : simbol untuk melakukan pewarisan. Misalnya,

class Animal {  
  // fields and methods
} 

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

Di sini, kita mewarisi kelas turunan Anjing dari kelas dasar Hewan . Anjing kelas sekarang dapat mengakses bidang dan metode Hewan kelas.


Contoh:Warisan C#

using System;

namespace Inheritance {

  // base class
  class Animal { 

    public string name;

    public void display() {
      Console.WriteLine("I am an animal");
    }
    
  } 
  
  // derived class of Animal 
  class Dog : Animal {
    
    public void getName() {
      Console.WriteLine("My name is " + name);
    }
  }

  class Program {

    static void Main(string[] args) {

      // object of derived class
      Dog labrador = new Dog();

      // access field and method of base class
      labrador.name = "Rohu";
      labrador.display();

      // access method from own class
      labrador.getName();

      Console.ReadLine();
    }

  }
}

Keluaran

I am an animal
My name is Rohu

Dalam contoh di atas, kami telah menurunkan subkelas Anjing dari kelas super Hewan . Perhatikan pernyataannya,

labrador.name = "Rohu";

labrador.getName();

Di sini, kami menggunakan labrador (objek Anjing) untuk mengakses nama dan tampilan() dari Hewan kelas. Ini dimungkinkan karena kelas turunan mewarisi semua bidang dan metode dari kelas dasar.

Juga, kami telah mengakses nama bidang di dalam metode Anjing kelas.


adalah-hubungan

Dalam C#, pewarisan adalah hubungan is-a. Kami menggunakan pewarisan hanya jika ada hubungan is-a antara dua kelas. Misalnya,

Kita dapat menurunkan Anjing dari Hewan kelas. Demikian pula, Apple dari Buah kelas dan Mobil dari Kendaraan kelas.


Anggota yang dilindungi dalam C# Inheritance

Saat kami mendeklarasikan bidang atau metode sebagai protected , itu hanya dapat diakses dari kelas yang sama dan kelas turunannya.

Contoh:Anggota yang dilindungi dalam Warisan

using System;

namespace Inheritance {

  // base class
  class Animal { 
    protected void eat() {
      Console.WriteLine("I can eat");
    }
  } 
  
  // derived class of Animal 
  class Dog : Animal {
     static void Main(string[] args) {

      Dog labrador = new Dog();

      // access protected method from base class
      labrador.eat();

      Console.ReadLine();
    }
  }
}

Keluaran

I can eat

Pada contoh di atas, kita telah membuat sebuah kelas bernama Animal . Kelas menyertakan metode yang dilindungi eat() .

Kami telah menurunkan Anjing kelas dari Hewan kelas. Perhatikan pernyataannya,

labrador.eat();

Sejak protected metode dapat diakses dari kelas turunan, kami dapat mengakses eat() metode dari Anjing kelas.


Jenis pewarisan

Ada beberapa jenis pewarisan berikut:

1. Warisan Tunggal

Dalam pewarisan tunggal, satu kelas turunan mewarisi dari satu kelas dasar.

2. Warisan Bertingkat

Dalam pewarisan bertingkat, kelas turunan mewarisi dari basis dan kemudian kelas turunan yang sama bertindak sebagai kelas dasar untuk kelas lain.

3. Warisan Hirarkis

Dalam pewarisan hierarki, beberapa kelas turunan mewarisi dari satu kelas dasar.

4. Beberapa Warisan

Dalam multiple inheritance, satu kelas turunan mewarisi dari beberapa kelas dasar. C# tidak mendukung pewarisan berganda. Namun, kita dapat mencapai pewarisan berganda melalui antarmuka.

5. Warisan Hibrida

Warisan hibrida adalah kombinasi dari dua atau lebih jenis warisan. Kombinasi pewarisan bertingkat dan hierarki adalah contoh pewarisan Hibrida.


Penggantian Metode dalam Warisan C#

Jika metode yang sama ada di kelas dasar dan kelas turunan, metode di kelas turunan menimpa metode di kelas dasar. Ini disebut metode override dalam C#. Misalnya,

using System;

namespace Inheritance {

  // base class
  class Animal { 
    public virtual void eat() {

      Console.WriteLine("I eat food");
    }
  } 
  
  // derived class of Animal 
  class Dog : Animal {

    // overriding method from Animal
    public override void eat() {

      Console.WriteLine("I eat Dog food");
    }     
  }
  class Program {

    static void Main(string[] args) {
      // object of derived class
      Dog labrador = new Dog();

      // accesses overridden method
      labrador.eat();
    }
  }
}

Keluaran

I eat Dog food

Dalam contoh di atas, eat() metode hadir di kelas dasar dan kelas turunan.

Saat kita memanggil eat() menggunakan Anjing objek labrador ,

labrador.eat();

metode di dalam Anjing disebut. Ini karena metode di dalam Anjing menimpa metode yang sama di dalam Hewan .

Perhatikan, kami telah menggunakan virtual dan timpa dengan metode kelas dasar dan kelas turunan masing-masing. Di sini,

  • virtual - memungkinkan metode untuk ditimpa oleh kelas turunan
  • override - menunjukkan metode ini mengganti metode dari kelas dasar

Kata Kunci dasar dalam Warisan C#

Pada contoh sebelumnya, kita melihat bahwa metode di kelas turunan menimpa metode di kelas dasar.

Namun, bagaimana jika kita ingin memanggil metode kelas dasar juga?

Dalam hal ini, kami menggunakan base kata kunci untuk memanggil metode kelas dasar dari kelas turunan.

Contoh:kata kunci dasar dalam pewarisan C#

using System;

namespace Inheritance {

  // base class
  class Animal { 
    public virtual void eat() {

      Console.WriteLine("Animals eat food.");
    }
  } 
  
  // derived class of Animal 
  class Dog : Animal {

    // overriding method from Animal
    public override void eat() {
      
      // call method from Animal class
      base.eat();
      
      Console.WriteLine("Dogs eat Dog food.");
    }     
  }
  class Program {

    static void Main(string[] args) {

      Dog labrador = new Dog();
      labrador.eat();
    }
  }
}

Keluaran

Animals eat food.
Dogs eat Dog food.

Dalam contoh di atas, eat() metode hadir di kedua kelas dasar Hewan dan kelas turunan Anjing . Perhatikan pernyataannya,

base.eat();

Di sini, kami telah menggunakan base kata kunci untuk mengakses metode Hewan kelas dari Anjing kelas.


Pentingnya Warisan dalam C#

Untuk memahami pentingnya Warisan, mari kita pertimbangkan sebuah situasi.

Misalkan kita bekerja dengan poligon biasa seperti persegi, persegi panjang, dan sebagainya. Dan, kita harus menemukan keliling poligon ini berdasarkan input.

1. Karena rumus untuk menghitung keliling adalah umum untuk semua poligon beraturan, kita dapat membuat Poligon Reguler kelas dan metode calculatePerimeter() untuk menghitung keliling.

class RegularPolygon {

  calculatePerimeter() {
    // code to compute perimeter
  }
}

2. Dan mewarisi Persegi dan Persegi Panjang kelas dari RegularPolygon kelas. Masing-masing kelas ini akan memiliki properti untuk menyimpan panjang dan jumlah sisi karena mereka berbeda untuk semua poligon.

class Square : RegularPolygon {

  int  length = 0;
  int sides = 0;
}

Kami meneruskan nilai length dan sisi untuk menghitungperimeter() untuk menghitung keliling.

Beginilah cara pewarisan membuat kode kita dapat digunakan kembali dan lebih intuitif.

Contoh:Pentingnya Warisan

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);
      
    }
  }
}     

Keluaran

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

Pada contoh di atas, kita telah membuat RegularPolygon class yang memiliki metode untuk menghitung keliling poligon beraturan.

Di sini, Persegi dan Persegi Panjang mewarisi dari RegularPolygon .

Rumus untuk menghitung keliling adalah umum untuk semua, jadi kami telah menggunakan kembali calculatePerimeter() metode kelas dasar.

Dan karena rumus untuk menghitung luas berbeda untuk bentuk yang berbeda, kami telah membuat metode terpisah di dalam kelas turunan untuk menghitung luas.


Bahasa C

  1. C# Kelas dan Objek
  2. C# Akses Pengubah
  3. C# Kata Kunci statis
  4. C# kelas abstrak dan metode
  5. C# Kelas Bersarang
  6. C# Kelas Parsial dan Metode Parsial
  7. C# kelas dan metode tersegel
  8. Polimorfisme dalam C++
  9. Abstraksi Data dalam C++
  10. C# - Struktur Program