タグ付けされた質問 「derived-class」

16
派生クラスのメソッドを呼び出すと基本クラスのメソッドが呼び出されるのはなぜですか?
このコードを考えてみましょう: class Program { static void Main(string[] args) { Person person = new Teacher(); person.ShowInfo(); Console.ReadLine(); } } public class Person { public void ShowInfo() { Console.WriteLine("I am Person"); } } public class Teacher : Person { public new void ShowInfo() { Console.WriteLine("I am Teacher"); } } このコードを実行すると、次のように出力されます。 私は人です ただし、これはでTeacherはなくのインスタンスであることがわかりますPerson。なぜコードはそれをするのですか?
146 c#  class  derived-class 


1
数量化された制約を使用してOrdを派生させる(すべてa。Ord a => Ord(fa))
定量化された制約を使用してEq (A f)、うまく導出できますか?ただし、Ord(A f)を導出しようとすると失敗します。制約クラスにスーパークラスがある場合、数量化された制約の使用方法がわかりません。Ord (A f)スーパークラスを持つ他のクラスをどのように派生させるのですか? > newtype A f = A (f Int) > deriving instance (forall a. Eq a => Eq (f a)) => Eq (A f) > deriving instance (forall a. Ord a => Ord (f a)) => Ord (A f) <interactive>:3:1: error: • Could not deduce …

1
C#-オーバーライドされたメソッドの基本バージョンの呼び出し
基本クラスAと派生クラスがあるとしBます。 クラスにAは2つの関数があります:fun1()およびfun2()、はをfun1()呼び出しますfun2()。 クラスはandをBオーバーライドfun1()しfun2()、再度fun1()呼び出しますfun2()。 ただし、base.fun1()オーバーライドを呼び出しますfun2()。非常に不幸なループを作成する基本クラスのバージョンの代わりにbase.fun1()呼び出しfun2()を行うため: fun1() -> fun2() -> base.fun1() -> fun2() -> base.fun1() -> ... のbase.fun1()基本バージョンを強制的に呼び出す方法はありますfun2()か?本当の問題はおそらくこれらのクラスの設計が悪いことにあることは承知していますが、それがどういうわけか可能かどうか私はまだ興味があります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.