abstract:using System;using System.Collections.Generic;using System.Linq;using System.Text;#region 概述 //在類聲明中使用sealed可防止其它類繼承此類;在方法聲明中使用sealed修飾符可防止擴(kuò)充類重寫此方法。 //sealed修飾符主要用于防止非有意的派生,但是它還能促使某些運(yùn)行時(shí)優(yōu)化。具體說(shuō)來(lái),由于
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
#region 概述 //在類聲明中使用sealed可防止其它類繼承此類;在方法聲明中使用sealed修飾符可防止擴(kuò)充類重寫此方法。 //sealed修飾符主要用于防止非有意的派生,但是它還能促使某些運(yùn)行時(shí)優(yōu)化。具體說(shuō)來(lái),由于密封類永遠(yuǎn)不會(huì)有任何派生類,所以對(duì)密封類的實(shí)例的虛擬函數(shù)成員的調(diào)用可以轉(zhuǎn)換為非虛擬調(diào)用來(lái)處理。 //密封類://密封類在聲明中使用sealed 修飾符,這樣就可以防止該類被其它類繼承。如果試圖將一個(gè)密封類作為其它類的基類,C#將提示出錯(cuò)。理所當(dāng)然,密封類不能同時(shí)又是抽象類,因?yàn)槌橄罂偸窍M焕^承的。//在哪些場(chǎng)合下使用密封類呢?實(shí)際上,密封類中不可能有派生類。如果密封類實(shí)例中存在虛成員函數(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 那就錯(cuò)了 { 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(); } } }