abstract:using System;using System.Collections.Generic;using System.Linq;using System.Text;#region 概述 //在類聲明中使用sealed可防止其它類繼承此類;在方法聲明中使用sealed修飾符可防止擴充類重寫此方法。 //sealed修飾符主要用于防止非有意的派生,但是它還能促使某些運行時優(yōu)化。具體說來,由于
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
#region 概述 //在類聲明中使用sealed可防止其它類繼承此類;在方法聲明中使用sealed修飾符可防止擴充類重寫此方法。 //sealed修飾符主要用于防止非有意的派生,但是它還能促使某些運行時優(yōu)化。具體說來,由于密封類永遠不會有任何派生類,所以對密封類的實例的虛擬函數(shù)成員的調(diào)用可以轉(zhuǎn)換為非虛擬調(diào)用來處理。 //密封類://密封類在聲明中使用sealed 修飾符,這樣就可以防止該類被其它類繼承。如果試圖將一個密封類作為其它類的基類,C#將提示出錯。理所當然,密封類不能同時又是抽象類,因為抽象總是希望被繼承的。//在哪些場合下使用密封類呢?實際上,密封類中不可能有派生類。如果密封類實例中存在虛成員函數(shù),該成員函數(shù)可以轉(zhuǎn)化為非虛的,函數(shù)修飾符virtual 不再生效。#endregionnamespace Sealed密封類 { class NOSealed { public static void OO() { Console.WriteLine("沒有使用密封"); } } sealed class YESSealed { public static void OO() { Console.WriteLine("使用了密封"); } } class MyClass : NOSealed //YESSealed 那就錯了 { public new void OO() { Console.WriteLine("沒有繼承密封"); } } //密封類不可以被繼承,可以被調(diào)用 sealed class mysealed //聲明為密封類 { public int x; public int y; } class Program { static void Main(string[] args) { NOSealed.OO(); MyClass M = new MyClass(); M.OO(); //調(diào)用密封類 YESSealed.OO(); mysealed m = new mysealed(); m.x = 100; m.y = 200; Console.WriteLine("x={0}, y = {1}", m.x, m.y); Console.ReadLine(); Console.ReadKey(); } } }