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

C# sealed クラスとメソッドをマスターする:使用判断、実例、コードの安全性とパフォーマンス向上

C# sealed クラスとメソッドを理解する

このガイドでは、sealed キーワードで継承とメソッドオーバーライドを制限する方法を、実践的なコード例で説明します。

sealed クラス

C# において sealed キーワードはクラスの継承を防ぎます。sealed クラスは決して派生型を持てません。

例:

using System;
namespace SealedClass {
    sealed class Animal {
    }
    // sealed クラスを継承しようとするとコンパイルエラー
    class Dog : Animal {
    }
    class Program {
        static void Main (string [] args) {
            // Dog クラスのオブジェクト作成
            Dog d1 = new Dog();
            Console.ReadLine();
        }
    }
}

コンパイラが出力するエラー:

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

sealed メソッド

仮想メソッドをオーバーライドする際、さらに派生クラスでのオーバーライドを防止したい場合があります。override 宣言に sealed を付けることで実現できます。

例:

using System;
namespace SealedClass {
    class Animal {
        public virtual void MakeSound() {
            Console.WriteLine("Animal Sound");
        }
    }
    class Dog : Animal {
        // sealed オーバーライド
        sealed public override void MakeSound() {
            Console.WriteLine("Dog Sound");
        }
    }
    class Puppy : Dog {
        // sealed メソッドをオーバーライドしようとするとコンパイルエラー
        public override void MakeSound() {
            Console.WriteLine("Puppy Sound");
        }
    }
    class Program {
        static void Main (string [] args) {
            // Puppy クラスのオブジェクト作成
            Puppy d1 = new Puppy();
            Console.ReadLine();
        }
    }
}

結果のエラー:

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

ヒント: オーバーライド済みメソッドを sealed にすると、多段階継承チェーンでの更なるオーバーライドを阻止できます。


なぜ sealed クラスを使うのか?

  1. セキュリティと整合性 – sealed クラスは拡張できないため、その振る舞いは予測可能で、サブクラスによる改変から保護されます。
  2. パフォーマンス – ランタイムはサブクラスが存在しないことを知っているため、sealed 型をより積極的に最適化できます。
  3. 静的ユーティリティ型 – 多くのライブラリが sealed クラス経由で静的メンバーを公開します(例:System.Drawing の Pens)。

例えば Pens クラスは標準色の事前構成済み Pen インスタンスを提供します:

Pen bluePen = Pens.Blue; // 青いペンを表す

Pens が sealed なので、その静的メンバーを他の型でオーバーライドまたは変更することはできません。

C言語

  1. ASTM A729 クラス A: 二重正火・焼戻し鋼 - 主要特性と規格
  2. ASTM A649 クラス 2 正火・焼戻し鋼 - 仕様と特性
  3. ASTM A288 クラス4 調質鋼:仕様と特性
  4. C# クラスとオブジェクト:堅牢な OOP の基礎
  5. C# 抽象クラスと抽象メソッドをマスターする:実践ガイド
  6. C# 部分クラスと部分メソッドを理解する
  7. C++クラスとオブジェクト完全ガイド:オブジェクト指向プログラミングの実践
  8. C++フレンド関数とフレンドクラス:アクセス制御のマスター
  9. C#の継承:再利用可能で保守しやすいコードを構築する
  10. C#のポリモーフィズム:静的バインディングと動的バインディングを徹底解説
  11. Javaオブジェクトとクラス:コアOOP概念を完全理解