Kei*_*thS 15
是.的sealed
关键字也可以在方法中使用,以指示这是在较高继承层次虚拟或抽象的方法不能被进一步继承.
如果该方法从不虚拟或抽象开始,不用担心; 它不能被覆盖.
请注意,sealed
仅影响方法覆盖; 方法隐藏不能以这种方式停止,因此子类仍然可以声明new
与密封方法具有相同名称和签名的方法.
Jam*_*man 10
您可以sealed
通过使抽象类本身派生自某事物来获取关键字以处理抽象类中的方法:
abstract class DocumentTemplateBase
{
public abstract void WriteTitle();
public abstract void WriteSections();
}
abstract class DocumentTemplate : DocumentTemplateBase
{
public override sealed void WriteTitle()
{
Console.WriteLine("Project document");
}
public override sealed void WriteSections()
{
Console.WriteLine("Sections");
}
abstract public void WriteContent();
}
Run Code Online (Sandbox Code Playgroud)
仍然从原始(现在派生)的抽象类派生您的具体类:
class Document1_FromTemplate : DocumentTemplate
{
public override void WriteTitle() //error!
{
Console.WriteLine("Project1 document");
}
Run Code Online (Sandbox Code Playgroud)
"无法覆盖继承的成员'Dynamics.DocumentTemplate.WriteTitle()'因为它是密封的"
然而,没有什么可以阻止实施者使用new
它:
class Document1_FromTemplate : DocumentTemplate
{
public new void WriteTitle() //sorry! can't stop it!
{
Console.WriteLine("Project1 document");
}
Run Code Online (Sandbox Code Playgroud)
您可以通过sealed
两种方式使用该关键字:
要允许继承,请不要sealed
在类之前放置关键字,并避免sealed
在不希望被覆盖的函数之前覆盖put .
归档时间: |
|
查看次数: |
32299 次 |
最近记录: |