前提
C#で継承を使おうと思い、googleで検索しながら試行錯誤していたのですが、
一つ悩みの点があったので質問です。
C#
1class _base{ 2 public virtual void Func() { 3 } 4} 5class MainClass : _base{ 6 public override void Func() { 7 print("show"); 8 } 9} 10class CallClass{ 11 void main(){ 12 MainClass ma = new MainClass(); 13 _base ba = ma; 14 ba.Func(); 15 } 16}
これで、CallClassのvoid main()を呼び出すと、
show
と表示されると思います(print関数はUnityのprintのことです。)
実現したいこと-1
上記でも十分実現したいことはできているのですが、
Funcをいろんなclassで書くにあたって、
「public override void Func() 」
と毎回書くのは少し長い気がします。
勿論なければこれで書くしかないのですが、個人的には、
C#
1class _base{ 2 public void Func() { 3 } 4} 5class MainClass : _base{ 6 public void Func() { 7 print("show"); 8 } 9} 10class CallClass{ 11 void main(){ 12 MainClass ma = new MainClass(); 13 base ba = ma; 14 ba.Func(); 15 } 16}
のように、「virtual」「override」を省略してもMainClass内のFunc()を実行したいです。
実現したいこと-2
上記で無理であれば、別の方法として、
C#
1class MainClass_1{ 2 public void Func() { 3 print("show_base"); 4 } 5} 6class MainClass_2{ 7 public void Func() { 8 print("show_main"); 9 } 10} 11 12class CallClass{ 13 void main(){ 14 //List<??> lis = new List<??>(); 15 //lis.add(new MainClass_1()); 16 //lis.add(new MainClass_2()); 17 //for(int i = 0; i < lis.count; lis++){ 18 // lis[i].Func(); 19 //} 20 } 21}
(クラス名が違うので、そもそも1つのリストにまとめれない気がしますが、)
このように、複数のクラスを一つのリストにまとめて、同じ関数名のものを呼び出したいです。
もし何かあれば教えていただきたいです。
回答2件
あなたの回答
tips
プレビュー