C#でメソッドのオーバーライドと隠蔽を実装する方法は何ですか?
C#では、メソッドのオーバーライドと隠蔽は、継承とアクセス修飾子を使用して実装されます。
- Override(オーバーライド)の方法:サブクラスで親クラスのメソッドを上書きする際は、overrideキーワードを使用します。上書きされるメソッドは、親クラスのメソッドと同じ名前、パラメーターリスト、戻り値の型を持つ必要があります。例を以下に示します。
class BaseClass
{
public virtual void Print()
{
Console.WriteLine("Base Class");
}
}
class DerivedClass : BaseClass
{
public override void Print()
{
Console.WriteLine("Derived Class");
}
}
BaseClass baseObj = new DerivedClass(); // 创建子类对象,调用子类的Print方法
baseObj.Print(); // 输出:"Derived Class"
- 方法の隠蔽:親クラスのメソッドを子クラスで隠蔽する際には、newキーワードを使用します。隠蔽するメソッドは、親クラスのメソッドと同じ名前、引数リスト、戻り値の型である必要はありませんが、混乱を避けるために一致させることが望ましいです。以下に例を示します。
class BaseClass
{
public void Print()
{
Console.WriteLine("Base Class");
}
}
class DerivedClass : BaseClass
{
public new void Print()
{
Console.WriteLine("Derived Class");
}
}
BaseClass baseObj = new DerivedClass(); // 创建子类对象,调用父类的Print方法
baseObj.Print(); // 输出:"Base Class"
これらの方法によって、メソッドのオーバーライドと非表示を実現し、サブクラスが親クラスのメソッドをカスタマイズできるようにしています。