public sealed class myClass //声明密封类
{
public int = 0;
public void method()
{
Console.WriteLine("密封类");
}
}
并不是每个方法都可以声明为密封方法,密封方法只能用于对基类的虚方法进行实现并提供具体的实现,所以,声明密封方法时,sealed总是和override同时使用
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
MyClass2 test = new MyClass2();
test.Method();
}
}
public class MyClass1
{
public virtual void Method()
{
Console.WriteLine("基类中的虚方法");
Console.ReadLine();
}
}
public sealed class MyClass2:MyClass1
{
public sealed override void Method()
{
base.Method();
Console.WriteLine("密封类中重写后的方法");
}
}
}作者: 马晓平 时间: 2013-10-27 23:21
密封类
密封类可以用来限制扩展性,当在程序中密封了某个类时,其他类不能从该类继承,可防止对垒进行自定义。
定义密封类——sealed
sealed class MySealedClass
{
}
密封方法
下面的代码中用到了virtual(虚拟)修饰符
virtual 关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。 例如,此方法可被任何继承它的类重写。
默认情况下,方法是非虚拟的。 不能重写非虚方法。
virtual 修饰符不能与 static、abstract, private 或 override 修饰符一起使用。
除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样。
在静态属性上使用 virtual 修饰符是错误的。
通过包括使用 override 修饰符的属性声明,可在派生类中重写虚拟继承属性。
看示例:
namespace 密封方法
{
class Program
{
static void Main(string[] args)
{
Class2 myMethod = new Class2();
myMethod.MyMethod();
Console.ReadLine();
}
}
class Class1
{
public Class1()
{
Console.WriteLine("创建Class1的类型变量");
}
public virtual void MyMethod()
{
Console.WriteLine("这是一个方法");
}
}
class Class2 : Class1
{
public Class2()
{
Console.WriteLine("创建Class2的类型变量");
}
public sealed override void MyMethod()
{
Console.WriteLine("这是一个密封方法!");
}
}作者: 追溯客 时间: 2013-10-29 07:37
黑马有你更精彩!