sách gpt4 ăn đã đi

C#继承

In lại 作者:太空狗 更新时间:2023-10-29 22:25:06 26 4
mua khóa gpt4 giày nike

假设我有以下代码:

interface ISomeInterface
{
void DoSomething();
void A();
void B();
}

public abstract class ASomeAbstractImpl : ISomeInterface
{
public abstract void A();
public abstract void B();
public void DoSomething()
{
// code here
}
}

public class SomeImpl : ASomeAbstractImpl
{
public override void A()
{
// mã số
}

public override void B()
{
// mã số
}
}

问题是我希望密封(最终)ASomeAbstractImpl.DoSomething() 方法,这样其他类就无法实现它。由于代码现在 SomeImpl 可以有一个名为 DoSomething() 的方法并且可以调用它(它不会覆盖抽象类中具有相同名称的方法,因为没有标记为虚拟),但我想切断在 SomeImpl 类中实现这种方法的可能性。

Điều này có thể thực hiện được không?

câu trả lời hay nhất

默认情况下,C# 中的方法是密封的。但是,您无法采取任何措施来防止方法隐藏(在派生类中公开具有相同名称的方法,通常使用 mới)。

或者,就此而言,接口(interface)重新实现:

static void Main()
{
ISomeInterface si = new EvilClass();
si.DoSomething(); // mwahahah
}

public class EvilClass : ASomeAbstractImpl, ISomeInterface
{
public override void A() {}
public override void B() { }
void ISomeInterface.DoSomething()
{
Console.WriteLine("mwahahah");
}
}

关于C#继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1031072/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress