facebook twitter hatena line email

「Unity/Csharp/クラス/継承元から継承先実行」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「virtual,overrideをつけるとCallDebug()が継承先(Cat)で実行される。 <pre> abstract class Animal { public virtual void Call() { CallDebug();...」)
 
 
(同じ利用者による、間の4版が非表示)
行23: 行23:
 
     }
 
     }
 
}
 
}
<pre>
+
</pre>
  
virtual,overrideを消すとCallDebug()が継承元(Animal)で実行される。
+
virtual,overrideを消すとCallDebug()が継承元(Animal)で実行されるので失敗。
 
<pre>
 
<pre>
 
abstract class Animal
 
abstract class Animal
行33: 行33:
 
         CallDebug();
 
         CallDebug();
 
     }
 
     }
     protected void CallDebug()
+
     public void CallDebug()
 
     {
 
     {
 
         Debug.Log("---");
 
         Debug.Log("---");
行49: 行49:
 
     }
 
     }
 
}
 
}
<pre>
+
</pre>
 +
 
 +
サンプル実行方法
 +
</pre>
 +
Cat cat = new Cat();
 +
cat.Call();
 +
</pre>

2022年8月8日 (月) 15:20時点における最新版

virtual,overrideをつけるとCallDebug()が継承先(Cat)で実行される。

abstract class Animal
{
    public virtual void Call()
    {
        CallDebug();
    }
    protected virtual void CallDebug()
    {
        Debug.Log("---");
    }
}
class Cat : Animal
{
    public override void Call()
    {
        base.Call();
    }
    public override void CallDebug()
    {
        Debug.Log("nya");
    }
}

virtual,overrideを消すとCallDebug()が継承元(Animal)で実行されるので失敗。

abstract class Animal
{
    public virtual void Call()
    {
        CallDebug();
    }
    public void CallDebug()
    {
        Debug.Log("---");
    }
}
class Cat : Animal
{
    public override void Call()
    {
        base.Call();
    }
    public void CallDebug()
    {
        Debug.Log("nya");
    }
}

サンプル実行方法 </pre> Cat cat = new Cat(); cat.Call(); </pre>