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

C# kelas abstrak dan metode

C# kelas abstrak dan metode

Dalam tutorial ini, kita akan belajar tentang kelas dan metode abstrak C# dengan bantuan contoh.

Kelas Abstrak

Dalam C#, kita tidak dapat membuat objek dari kelas abstrak. Kami menggunakan abstract kata kunci untuk membuat kelas abstrak. Misalnya,

// create an abstract class
abstract class Language {
  // fields and methods
}
...

// try to create an object Language
// throws an error
Language obj = new Language();

Kelas abstrak dapat memiliki metode abstrak (metode tanpa isi) dan metode non-abstrak (metode dengan isi). Misalnya,

abstract class Language {

  // abstract method
  public abstract void display1();

  // non-abstract method
  public void display2() {
    Console.WriteLine("Non abstract method");
  }
}

Sebelum melanjutkan, pastikan untuk mengetahui tentang pewarisan C#.


Mewarisi Kelas Abstrak

Karena kita tidak dapat membuat objek dari kelas abstrak, kita harus membuat kelas turunan darinya. Sehingga kita dapat mengakses anggota kelas abstrak menggunakan objek dari kelas turunan. Misalnya,

using System;
namespace AbstractClass {

  abstract class Language {

    // non-abstract method
    public void display() {
      Console.WriteLine("Non abstract method");
    }
  }

  // inheriting from abstract class
  class Program : Language {

    static void Main (string [] args) {
      
      // object of Program class
      Program obj = new Program();

      // access method of an abstract class
      obj.display();

      Console.ReadLine();
    }
  }
}

Keluaran

Non abstract method

Pada contoh di atas, kita telah membuat kelas abstrak bernama Bahasa . Kelas berisi metode non-abstrak display() .

Kami telah membuat Program kelas yang mewarisi kelas abstrak. Perhatikan pernyataannya,

obj.display();

Di sini, obj adalah objek dari kelas turunan Program . Kami memanggil metode kelas abstrak menggunakan objek obj .

Catatan :Kita dapat menggunakan kelas abstrak hanya sebagai kelas dasar. Inilah sebabnya mengapa kelas abstrak tidak dapat disegel. Untuk mengetahui lebih lanjut, kunjungi kelas dan metode tersegel C#.


Metode Abstrak C#

Sebuah metode yang tidak memiliki tubuh dikenal sebagai metode abstrak. Kami menggunakan abstract kata kunci untuk membuat metode abstrak. Misalnya,

public abstract void display();

Di sini, display() adalah metode abstrak. Metode abstrak hanya dapat ada di dalam kelas abstrak.

Saat kelas non-abstrak mewarisi kelas abstrak, kelas tersebut harus menyediakan implementasi metode abstrak.

Contoh:Implementasi metode abstrak

using System;
namespace AbstractClass {

  abstract class Animal {

    // abstract method
    public abstract void makeSound();
  }

  // inheriting from abstract class
  class Dog : Animal {

    // provide implementation of abstract method
    public override void makeSound() {

      Console.WriteLine("Bark Bark");

    }
  }
  class Program  {
    static void Main (string [] args) {
      // create an object of Dog class
      Dog obj = new Dog();
      obj.makeSound();    

      Console.ReadLine(); 
    }
  }
}

Keluaran

Bark Bark 

Pada contoh di atas, kita telah membuat kelas abstrak bernama Animal . Kami memiliki metode abstrak makeSound() di dalam kelas.

Kami memiliki Anjing kelas yang mewarisi dari Hewan kelas. Anjing class menyediakan implementasi metode abstrak makeSound() .

// provide implementation of abstract method
public override void makeSound() {

  Console.WriteLine("Bark Bark");

}

Perhatikan, kami telah menggunakan override dengan makeSound() metode. Ini menunjukkan bahwa metode tersebut menggantikan metode dari kelas dasar.

Kami kemudian menggunakan objek Anjing kelas untuk mengakses makeSound() .

Jika Anjing kelas tidak menyediakan implementasi metode abstrak makeSound() , Anjing kelas seharusnya juga ditandai sebagai abstrak.

Catatan :Berbeda dengan pewarisan C#, kita tidak dapat menggunakan virtual dengan metode abstrak dari kelas dasar. Ini karena kelas abstrak secara implisit virtual.


Kelas abstrak dengan pengakses get dan set

Kita dapat menandai get dan set accessors sebagai abstract. Misalnya,

using System;
namespace AbstractClass {
  abstract class Animal {
    
    protected string name;
    // abstract method
    public abstract string Name {
      get;
      set;
    }
  }

  // inheriting from abstract class
  class Dog : Animal {

    // provide implementation of abstract method
    public override string Name {
      get {
        return name;
      }
      set {
        name = value; 
      }
    }
   
  }
  class Program  {
    static void Main (string [] args) {
      // create an object of Dog class
      Dog obj = new Dog();  
      obj.Name = "Tom";
      Console.WriteLine("Name: " + obj.Name); 

      Console.ReadLine();
    }
  }
}

Keluaran

Name: Tom

Pada contoh di atas, kita telah menandai get and set accessor sebagai abstract.

obj.Name = "Tom";
Console.WriteLine("Name: " + obj.Name);

Kami mengatur dan mendapatkan nilai name bidang kelas abstrak Hewan menggunakan objek dari kelas turunan Anjing .


Mengakses Konstruktor Kelas Abstrak

Kelas abstrak dapat memiliki konstruktor juga. Misalnya,

using System;
namespace AbstractClass {
  abstract class Animal {
    
    public Animal() {
      Console.WriteLine("Animal Constructor");
    }
  }

  class Dog : Animal {
    public Dog() {
      Console.WriteLine("Dog Constructor");
    }   
  }

  class Program  {
    static void Main (string [] args) {
      // create an object of Dog class
      Dog d1 = new Dog();  

      Console.ReadLine();
    }
  }
}

Keluaran

Animal Constructor
Dog Constructor

Pada contoh di atas, kita telah membuat konstruktor di dalam kelas abstrak Animal .

Dog d1 = new Dog();

Di sini, ketika kita membuat objek dari kelas turunan Anjing konstruktor kelas abstrak Hewan dipanggil juga.

Catatan :Kita juga bisa menggunakan destruktor di dalam kelas abstrak.


C# Abstraksi

Kelas abstrak digunakan untuk mencapai abstraksi dalam C#.

Abstraksi adalah salah satu konsep penting dari pemrograman berorientasi objek. Ini memungkinkan kami menyembunyikan detail yang tidak perlu dan hanya menampilkan informasi yang diperlukan.

Ini membantu kami mengelola kerumitan dengan menyembunyikan detail dengan ide tingkat tinggi yang lebih sederhana.

Contoh abstraksi praktis dapat berupa rem sepeda motor. Kita tahu apa yang dilakukan rem. Saat kita menginjak rem, sepeda motor akan berhenti. Namun, cara kerja rem disembunyikan dari kami.

Keuntungan utama menyembunyikan kerja rem adalah bahwa sekarang pabrikan dapat menerapkan rem secara berbeda untuk sepeda motor yang berbeda. Namun, apa yang dilakukan rem akan sama.

Contoh:C# Abstraksi

using System;
namespace AbstractClass {
  abstract class MotorBike {
    
    public abstract void brake();
  }

  class SportsBike : MotorBike {

    // provide implementation of abstract method
    public override void brake() {
      Console.WriteLine("Sports Bike Brake");
    }
   
  }

  class MountainBike : MotorBike {

    // provide implementation of abstract method
    public override void brake() {      
      Console.WriteLine("Mountain Bike Brake");
    }
   
  }
  class Program  {
    static void Main (string [] args) {
      // create an object of SportsBike class
      SportsBike s1 = new SportsBike();  
      s1.brake();

      // create an object of MountainBike class
      MountainBike m1 = new MountainBike();
      m1.brake();

      Console.ReadLine();
    }
  }
}

Keluaran

Sports Bike Brake
Mountain Bike Brake

Pada contoh di atas, kita telah membuat kelas abstrak MotorBike . Ia memiliki metode abstrak brake() .

Sebagai rem() adalah metode abstrak implementasi brake() di Sepeda Motor disembunyikan.

Setiap sepeda motor memiliki penerapan rem yang berbeda. Inilah mengapa SportsBike membuat implementasi sendiri dari brake() dan Sepeda Gunung membuat implementasi sendiri dari brake() .

Catatan :Kami menggunakan antarmuka untuk mencapai abstraksi lengkap di C#. Untuk mempelajari lebih lanjut, kunjungi Antarmuka C#.


Bahasa C

  1. C# Kelas dan Objek
  2. C# Kelas Parsial dan Metode Parsial
  3. C# kelas dan metode tersegel
  4. Kelas dan Objek C++
  5. Fungsi teman C++ dan Kelas teman
  6. Kelas dan Objek Java
  7. Kelas Abstrak Java dan Metode Abstrak
  8. Java Nested dan Kelas Dalam
  9. Tutorial Kelas Abstrak C# dengan Contoh:Apa itu Abstraksi?
  10. Java - Objek dan Kelas