sealed关键字
含义定义类为sealed—>密封类定义方法为sealed—>密封方法
含义
sealed—>密封的,封闭的。顾名思义就是由sealed修饰的类或方法将不能被继承或是重写。
定义类为sealed—>密封类
密封类:当对一个类应用 sealed修饰符时,此修饰符会阻止其他类从该类继承(不能派生子类)。
代码1:
static void Main(string[] args)
{
B b = new B();//声明子类对象b
Console.ReadKey();
}
sealed class A//基类被sealed修饰
{
}
class B:A//类B继承父类
{
}
结果显而易见: 代码2:
定义方法为sealed—>密封方法
密封方法 :当对方法或者属性应用sealed修饰符时,能够允许派生类从基类继承,并防止它们重写特定的虚方法或虚属性。(★此时同override一起使用)
【在提到密封方法时,我们先了解下对基类方法的重写:】 重写 VS 重载 重写:派生类继承基类的方法 (特点:①基类中方法virtual;②派生类中方法override)。 重载:在一个类中用相同的名称但是不同的参数类型创建一个以上的过程、实例构造函数或属性。 代码1:
static void Main(string[] args)
{
Dog dog = new Dog();//声明Dog对象
dog.Shout();
Cat cat=new Cat();//声明Cat对象
cat.Shout();
Console.ReadKey();
}
class Animale//定义动物父类
{
public virtual void Shout()//父类中有一个Shout方法
//★virtual
{
Console.WriteLine("动物具有叫声!");
}
}
class Dog:Animale//狗类继承父类
{
public override void Shout()//对父类中Shout进行重写,Dog类输出Dog所具有的Shout方法
//★override
{
Console.WriteLine("旺旺.....");
}
}
class Cat : Animale//对父类中Shout进行重写,Cat类输出Cat所具有的Shout方法
{
public override void Shout()
{
Console.WriteLine("喵喵.....");
}
}
//Output:
//旺旺.....
//喵喵.....
言归正传: 代码1:
static void Main(string[] args)
{
B b = new B();
b.Print();
Console.ReadKey();
}
class A//声明父类
{
public virtual void Print()//Print方法
//★virtual虚基类
{
Console.WriteLine("输出:A");
}
}
class B:A//声明B类对A类进行继承
{
public sealed override void Print()//sealed对B类中Print方法进行密封,子类无法对其重写
//★override重写父类Print方法
{
Console.WriteLine("输出:B");
}
}
//↓为了避免该项目影响当前工程,如需测试,删除注释↓
class C : B//声明C类对B类进行继承
{
//public override void Print()//重写父类中Print方法
//★B类中Print方法被密封,其实是无法继承的
//{
// Console.WriteLine("输出:C");
//}
}
干就完了,没毛病!