C# ポリモーフィック ナレッジ ポイント

ポリモーフィズム
1. 定義:何: ポリモーフィズムとは、同じ動作が複数の異なる表現または形式を
持つ能力です。 、ポリモーフィズムと呼ばれるもの(先生はインタビューで使っていたとのことでしたが、まだ試していません


2. ポリモーフィズムの適用
ポリモーフィズムを実現する 3 つの方法
a. 仮想メソッド
b. 抽象クラス
c. インターフェース

3. ポリモーフィズムを実現する2つの要素
1) サブクラスが親クラスのメソッドを書き換える
2) 変換

4. 利点:
1) 代替可能性 (代替可能性)。ポリモーフィズムにより、既存のコードの代用が可能になります。
2) スケーラビリティ (拡張性)。ポリモーフィズムはコードに拡張可能です。新しいサブクラスを追加しても、ポリモーフィズム、継承、および既存のクラスのその他の機能の操作と操作には影響しません。
3) インターフェース機能。ポリモーフィズムは、メソッド シグネチャを介してサブクラスに共通のインターフェイスを提供するスーパークラスによって実現されます。メソッド シグネチャは、サブクラスによって完成または上書きされます。
4) 柔軟性。柔軟で多様な操作をアプリケーションに具現化し、使用効率を向上させます。
5)シンプルさ(シンプルさ)。ポリモーフィズムは、アプリケーション ソフトウェアのコード記述と変更プロセスを簡素化します。特に、多数のオブジェクトの計算と操作を処理する場合、この機能は特に顕著で重要です。

5. 上向きの変換と下向きの変換
上向きの変換: 親クラスの参照がサブクラスのオブジェクトを指す
例: Animal anima = new Dog();
下向きの変換: サブクラスの参照が親クラスのオブジェクトを指す
例: Dog dog = (Dog ) 動物; セキュリティなし
6. ケース

class Animal
  {
    
    
   public virtual void Eat()//虚方法
     {
    
    
       Console.WriteLine("动物吃饭");
     }
  }
class Dog : Animal
  {
    
    
    public int age = 2;
    public override void Eat()//子类重写父类
     {
    
    
      Console.WriteLine("狗吃骨头");
     }
  }
class Cat : Animal
  {
    
    
   public string sex = "公";
   public override void Eat()//子类重写父类
    {
    
    
      Console.WriteLine("猫吃鱼");
    }
  }
//is用于判断一个类型是否是一种类型   son is Person :真或假
//as用于引用类型转换   成功则为非空,失败则为空  son as Person:null或对象
class Master
 {
    
    
  void Feed(Animal a)//父类做参数
   {
    
    
    if (a is Dog)//判断a是狗
     {
    
    
      // Dog d =(Dog) a;//向下转型
      Dog d = a as Dog;//向下转型
      d.age = 2;
      Console.WriteLine("狗的年龄:" + d.age);
     }
    else if (a is Cat)//判断a是猫
     {
    
    
       Cat c = (Cat)a;//向下转型
       c.sex = "母";
       Console.WriteLine("猫的性别:" + c.sex);
     }
      a.Eat();
 }
static void Main(string[] args)
  {
    
    
   Master m = new Master();
   Animal dog = new Dog();//向下转型    
   m.Feed(dog);
   Animal cat = new Cat();//向下转型
   m.Feed(cat);   
  }

//上向きの遷移と下向きの遷移とは何かを知っている限り、少し混乱しているように見えます
//ポリモーフィズムには次の 2 つの要素が必要です:
//a. サブクラスは親クラスのメソッドをオーバーライドします
//b . 変換

おすすめ

転載: blog.csdn.net/weixin_44706943/article/details/125959638