工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C# の封印されたクラスとメソッド

C# シール クラスとメソッド

このチュートリアルでは、例を使用して C# のシール クラスとメソッドについて学習します。

シールド クラス

C# では、クラスを別のクラスに継承させたくない場合、そのクラスを シール クラス として宣言できます。 .

シール クラスは派生クラスを持つことはできません。 sealed を使用します シール クラスを作成するためのキーワード。たとえば、

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

上記の例では、sealed クラス Animal を作成しました。 .ここでは、Dog を導出しようとしています。 動物のクラス クラス。

シール クラスは継承できないため、プログラムは次のエラーを生成します:

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

封印された方法

メソッドのオーバーライド中に、オーバーライドされたメソッドを別のクラスでさらにオーバーライドしたくない場合は、それを封印されたメソッドとして宣言できます。 .

sealed を使用します オーバーライドされたメソッドでキーワードを使用して、封印されたメソッドを作成します。たとえば、

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

上記の例では、makeSound() をオーバーライドしています。 Dog 内のメソッド クラス。

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

sealed を使用していることに注意してください makeSound() を使用したキーワード .これは子犬を意味します Dog を継承するクラス クラスは makeSound() をオーバーライドできません .

したがって、エラーが発生します

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

makeSound() をさらにオーバーライドしようとすると Puppy 内のメソッド クラス。

注意 :オーバーライドされたメソッドを封印すると、マルチレベル継承でのメソッドのオーバーライドが防止されます。


なぜシールド クラスなのか

1.継承を防ぐためにシールされたクラスを使用します。シール クラスから継承できないため、シール クラスのメソッドを他のクラスから操作することはできません。

セキュリティ上の問題を防ぐのに役立ちます。たとえば、

sealed class A { 
  ...
}

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

クラス A として クラス B は継承できません クラス A のメソッドをオーバーライドして操作することはできません .

2. シール クラスの最適な用途の 1 つは、静的メンバーを持つクラスがある場合です。

ペン System.Drawing のクラス 名前空間は、シール クラスの例の 1 つです。 ペン クラスには、標準色のペンを表す静的メンバーがあります。 Pens.Blue 青色のペンを表します。


C言語

  1. C# クラスとオブジェクト
  2. C# の抽象クラスとメソッド
  3. C# 部分クラスと部分メソッド
  4. C++ クラスとオブジェクト
  5. C++ フレンド関数とフレンド クラス
  6. Java - オブジェクトとクラス
  7. C# - 継承
  8. C# - ポリモーフィズム
  9. ASTM A729 クラス A 二重焼きならし焼戻し
  10. ASTM A649 クラス 2 正規化および強化
  11. ASTM A288 クラス 4 焼入れ焼戻し