มีคลาสใดบ้างที่ถูกนำไปใช้ในคลาสแบบสแตติก? วิธีการ:
static class ABC : Anyclass
มีคลาสใดที่สามารถสืบทอดได้ทั้งในคลาสที่ปิดผนึกและคลาสคงที่?
วิธีการ:static class ABC : AClass {}
และ
sealed class ABC : AClass {}
ฉันขอผิดบ้างไหม?
มีคลาสใดบ้างที่ถูกนำไปใช้ในคลาสแบบสแตติก? วิธีการ:
static class ABC : Anyclass
มีคลาสใดที่สามารถสืบทอดได้ทั้งในคลาสที่ปิดผนึกและคลาสคงที่?
วิธีการ:
static class ABC : AClass {}
และ
sealed class ABC : AClass {}
ฉันขอผิดบ้างไหม?
คำตอบ:
สิ่งนี้อาจช่วยคุณได้:
+--------------+---+-------------------------+------------------+---------------------+
| Class Type | | Can inherit from others | Can be inherited | Can be instantiated |
|--------------|---|-------------------------+------------------+---------------------+
| normal | : | YES | YES | YES |
| abstract | : | YES | YES | NO |
| sealed | : | YES | NO | YES |
| static | : | NO | NO | NO |
+--------------+---+-------------------------+------------------+---------------------+
root class
ที่สามารถสืบทอดและสร้างอินสแตนซ์ได้ แต่ไม่สามารถสืบทอดได้ ไม่แน่ใจว่าทำไมถึงมีประโยชน์ แต่ยังคง
static class Foo : object { }
ถูกต้อง static class Foo { }
แต่เป็นหลัก
ในคำง่าย ๆ
ระดับคงที่
ชั้นสามารถประกาศคงที่แสดงให้เห็นว่ามันมีสมาชิกคงที่เท่านั้น ไม่สามารถสร้างอินสแตนซ์ของคลาสแบบคงที่ได้โดยใช้คำหลักใหม่ คลาสที่คงที่จะถูกโหลดโดยอัตโนมัติโดย. NET Framework ภาษาทั่วไปรันไทม์ (CLR) เมื่อโปรแกรมหรือ namespace ที่มีการโหลดชั้นเรียน
คลาสที่ปิดผนึก
คลาสที่ปิดผนึกไม่สามารถใช้เป็นคลาสพื้นฐานได้ คลาสที่ปิดผนึกใช้เพื่อป้องกันการสืบทอดมาเป็นหลัก เนื่องจากไม่สามารถใช้เป็นคลาสพื้นฐานการปรับให้เหมาะสมแบบรันไทม์บางอย่างสามารถทำให้การโทรสมาชิกคลาสที่ปิดผนึกเร็วขึ้นเล็กน้อย
คุณสามารถปล่อยให้sealed
สืบทอดชั้นจากชั้นอื่น แต่คุณไม่สามารถสืบทอดจากsealed
ระดับ:
sealed class MySealedClass : BaseClass // is ok
class MyOtherClass : MySealedClass // won't compile
static
ชั้นไม่สามารถรับมรดกจากชั้นเรียนอื่น ๆ
คุณสามารถแยกความแตกต่างของพวกเขาทั้งสองเป็น:
Sealed Class | Static Class
--------------------------|-------------------------
it can inherit From other | it cannot inherit From other
classes but cannot be | classes as well as cannot be
inherited | inherited
คำตอบง่ายๆคือคลาสที่ปิดผนึกไม่สามารถใช้เป็นคลาสพื้นฐานได้
ฉันกำลังพยายามแสดงให้คุณเห็นคลาสที่ปิดผนึกเป็นคลาสที่ได้รับในรหัสด้านล่าง
public sealed class SealedClass : ClassBase
{
public override void Print()
{
base.Print();
}
}
และคุณลักษณะที่ปิดผนึกอื่นสามารถเข้าถึงได้ด้วยอินสแตนซ์จากมันเท่านั้น (คุณไม่สามารถสืบทอดจากมันได้)
class Program
{
static void Main(string[] args)
{
SealedClass objSeald = new SealedClass();
objSeald.Name = "Blah blah balh";
objSeald.Print();
}
}
ชั้นเรียนที่ปิดสนิท:
คลาสแบบคงที่:
1 - ไม่คุณไม่สามารถใช้คลาสแบบคงที่ได้
2 - ไม่คุณไม่สามารถสืบทอดจากคลาสแบบสแตติกหรือแบบปิดผนึกได้
static
ไม่มีอะไรเกี่ยวข้องกับsealed