C#中的封闭方法和封闭类
一、封闭类
使用sealed修饰符修饰的类为封闭类,表示该类不可被继承。故,该修饰符不可与abstract一起使用,因为抽象类的方法需要继承的实体类做具体实现,必须被继承才有意义。
using System;
namespace Test
{
public sealed class Transformer
{
private static bool flag = false;
public static void ChangeStatus()
{
Action change = () =>
{
flag = !flag;
Console.WriteLine(flag);
};
change();
}
public static void PrintNum(int num)
{
Action Print = () =>
{
Console.WriteLine(num);
};
Print();
}
}
public class Tmp : Transformer//error:无法从密闭类型派生
{
}
public class Program
{
public static void Main()
{
Transformer.ChangeStatus();
Transformer.PrintNum(5);
}
}
}
二、封闭方法
sealed应用与方法时,表示该方法不允许子类进行替代,即:作用与方法时,sealed必须与override一起使用。
using Microsoft.VisualBasic.CompilerServices;
using System;
using Test;
using System.Diagnostics;
using System.Linq.Expressions;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.WindowsRuntime;
namespace Test
{
public abstract class Base
{
public abstract void show();
}
public class First : Base
{
public sealed override void show()
{
Console.WriteLine("You will always see this Message.");
}
}
public class Second : First
{
public override void show()//error:继承成员First.show成员是密封的,无法进行重写。
{
}
}
public class Program
{
}
}