Csharp/CSharp Tutorial/Class/sealed

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

internal sealed class

<source lang="csharp">using System; using System.Collections.Generic; using System.Linq; using System.Text;

   public abstract class MyBase
   {
   }
   internal class MyClass : MyBase
   {
   }
   public interface IMyBaseInterface
   {
   }
   internal interface IMyBaseInterface2
   {
   }
   internal interface IMyInterface : IMyBaseInterface, IMyBaseInterface2
   {
   }
   internal sealed class MyComplexClass : MyClass, IMyInterface
   {
   }
   class Program
   {
       static void Main(string[] args)
       {
           MyComplexClass myObj = new MyComplexClass();
           Console.WriteLine(myObj.ToString());
       }
   }</source>

Sealed Classes

<source lang="csharp">sealed class MyClass {

   MyClass() {}

}</source>

Sealed methods

<source lang="csharp">using System; public class BaseClass {

 public string lastName;
 public string firstName;
 public BaseClass(string lastName, string firstName)
 {
   this.lastName = lastName;
   this.firstName = firstName;
 }
 public virtual void Accelerate()
 {
   Console.WriteLine("In BaseClass Accelerate() method");
   Console.WriteLine(firstName + " accelerating");
 }

} public class DerivedClass : BaseClass {

 public DerivedClass(string lastName, string firstName) : base(lastName, firstName)
 {
 }
 sealed public override void Accelerate()
 {
   Console.WriteLine("In DerivedClass Accelerate() method");
   Console.WriteLine(firstName + " accelerating");
 }

} class MainClass {

 public static void Main()
 {
   DerivedClass myDerivedClass = new DerivedClass("A", "M");
   Console.WriteLine("Calling myDerivedClass.Accelerate()");
   myDerivedClass.Accelerate();
 }

}</source>

Calling myDerivedClass.Accelerate()
In DerivedClass Accelerate() method
M accelerating

sealed types and methods.

To prevent a class from being inherited, precede its declaration with sealed.


<source lang="csharp">sealed class FooSealed {} class BaseClass {

   protected virtual void Bar() { /*...*/ }

} class Derived : BaseClass {

   protected override sealed void Bar() { /* ... */ }

}</source>