万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    C# Unity ポリモーフィズム実験

    Personとそれを継承したTaro作る

    public class Person
    {
        public string name; // 名前.
        public int age;  // 年齢.
    
        public virtual void Say()
        {
            Debug.Log("person");
        }
    }
    
    public class Taro : Person
    {
        public override void Say()
        {
            Debug.Log("I am taro");
        }
    }

    実行させてみる。

        void Start () {
            Person p1 = new Person();
            p1.name = "YAMADA ICHIRO";
            p1.age  = 11;
            p1.Say(); // => person ・・・【A】
    
            Person p2 = new Taro();
            p2.name = "Tanaka Taro";
            p2.age  = 19;
            p2.Say(); // => I am taro ・・・【B】
            ((Person)p2).Say(); // => I am taro ・・・【D】
    
            Person[] persons = new Person[]{
                p1,
                p2,
            };
    
            foreach(var person in persons)
            {
                person.Say ();
            }
            =>  person、次はI am taro【D】
        }

    Aはわかる。

    newした時の型を見ているのだろうか? Bは親ではなく継承した子クラスのメソッド

    キャストしたら親クラスのメソッドになると思ったがCは・・またもや子のメソッド

    Dは一旦配列に入れたが、それでもnewした時のメソッドになっている。