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

C# kelas dan metode tersegel

C# kelas dan metode tersegel

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

Kelas Tertutup

Dalam C#, ketika kita tidak ingin suatu kelas diwarisi oleh kelas lain, kita dapat mendeklarasikan kelas tersebut sebagai kelas yang disegel .

Kelas yang disegel tidak dapat memiliki kelas turunan. Kami menggunakan sealed kata kunci untuk membuat kelas tersegel. Misalnya,

using System;
namespace SealedClass {
  sealed class Animal {
    
  }

  // trying to inherit sealed class
  // Error Code
  class Dog : Animal {
    
  }   

  class Program  {
    static void Main (string [] args) {

      // create an object of Dog class
      Dog d1 = new Dog();  
      Console.ReadLine();
    }
  }
}

Pada contoh di atas, kita telah membuat kelas tersegel Hewan . Di sini, kami mencoba menurunkan Anjing kelas dari Hewan kelas.

Karena kelas yang disegel tidak dapat diwariskan, program menghasilkan kesalahan berikut:

error CS0509: 'Dog': cannot derive from sealed type 'Animal'

Metode Tertutup

Selama penggantian metode, jika kita tidak ingin metode yang ditimpa lebih lanjut ditimpa oleh kelas lain, kita dapat mendeklarasikannya sebagai metode tertutup .

Kami menggunakan sealed kata kunci dengan metode yang diganti untuk membuat metode yang disegel. Misalnya,

using System;
namespace SealedClass {

  class Animal {
    public virtual void makeSound() {
    Console.WriteLine("Animal Sound");
    }
  }

  class Dog : Animal {

    // sealed method
    sealed public override void makeSound() {

      Console.WriteLine("Dog Sound");
    }
  }

  class Puppy : Dog {

    // trying to override sealed method
    public override void makeSound() {
      Console.WriteLine("Puppy Sound");
    }
  }   

  class Program  {
    static void Main (string [] args) {
      
      // create an object of Puppy class
      Puppy d1 = new Puppy();  
      Console.ReadLine();
    }
  }
}

Pada contoh di atas, kita telah mengganti makeSound() metode di dalam Anjing kelas.

// Inside the Dog class
sealed public override void makeSound() {
  Console.WriteLine("Dog Sound");
}

Perhatikan bahwa kita telah menggunakan sealed kata kunci dengan makeSound() . Ini berarti Anak Anjing kelas yang mewarisi Anjing kelas tidak diizinkan untuk menimpa makeSound() .

Karenanya, kami mendapatkan kesalahan

error CS0239: 'Puppy.makeSound()': cannot override inherited member 'Dog.makeSound()' because it is sealed

ketika kami mencoba untuk menimpa makeSound() . lebih lanjut metode di dalam Anak Anjing kelas.

Catatan :Menyegel metode yang diganti mencegah penggantian metode dalam pewarisan bertingkat.


Mengapa Kelas Tertutup?

1. Kami menggunakan kelas tersegel untuk mencegah pewarisan. Karena kita tidak dapat mewarisi dari kelas yang disegel, metode di kelas yang disegel tidak dapat dimanipulasi dari kelas lain.

Ini membantu untuk mencegah masalah keamanan. Misalnya,

sealed class A { 
  ...
}

// error code
class B : A {
  ...
}

Sebagai kelas A tidak dapat diwarisi, kelas B tidak dapat menimpa dan memanipulasi metode kelas A .

2. Salah satu kegunaan terbaik dari kelas tersegel adalah ketika Anda memiliki kelas dengan anggota statis.

Pena kelas System.Drawing namespace adalah salah satu contoh kelas yang disegel. Pena kelas memiliki anggota statis yang mewakili pena dengan warna standar. Pens.Blue mewakili pena dengan warna biru.


Bahasa C

  1. C# Kelas dan Objek
  2. C# kelas abstrak dan metode
  3. C# Kelas Parsial dan Metode Parsial
  4. Kelas dan Objek C++
  5. Fungsi teman C++ dan Kelas teman
  6. Java - Objek dan Kelas
  7. C# - Warisan
  8. C# - Polimorfisme
  9. ASTM A729 Kelas A Double-Normalized dan Tempered
  10. ASTM A649 Kelas 2 Dinormalisasi dan Tempered