以下のような私のサンプルプログラム。Liskovの置換原理を理解する
public class Animal
{
public virtual string MakeSound()
{
return "General Sound";
}
}
public class Dog : Animal
{
public override string MakeSound()
{
return "Bow..Bow..";
}
}
}
static void Main(string[] args)
{
Animal obj1 = new Animal();
Console.WriteLine("General Animal's sound id " + obj1.MakeSound());
Dog obj2 = new Dog();
Console.WriteLine("Dog Animal's sound id " + obj2.MakeSound());
//Violate LSP
Animal obj3 = new Dog();
Console.WriteLine("Animal's sound id " + obj3.MakeSound());
Console.ReadKey();
}
私がobj3のようなAnimalのためのDogインスタンスを作成するときの私の理解として、私たちはLSPに違反しています。私の理解を確認してください。はいの場合は、この場合に達成する方法を教えてください。私は自分のコーディングが概念的に正しいと思う。
なぜあなたはそれがLSPを破ると思いますか? (それは...) – Amit
コンパイル時に失敗するか、別の出力を期待していますか? –