ความแตกต่างที่สำคัญ: วิธีการบทคัดย่อเป็นวิธีการที่มีการประกาศ แต่ไม่มีการดำเนินการใด ๆ วิธีการเสมือนถูกใช้สำหรับการดำเนินการตามความหลากหลายชนิด คลาสที่ได้รับนั้นมีความยืดหยุ่นในการนำวิธีเสมือนของคลาสพื้นฐานมาใช้ใหม่โดยใช้คำหลัก 'แทนที่'
ตัวอย่างเช่น -
คลาสนามธรรมสาธารณะ publicAbstractClass
{
โมฆะนามธรรมสาธารณะ publicabstractMethod ();
โมฆะสาธารณะเสมือนเป็นโมฆะ nonAbstractMethod ()
{
Console.WriteLine ("การใช้งานถูกกำหนดไว้ในวิธีการ");
}
คลาส normalNonAbstractClass: exampleAbstractClass
{
public override เป็นโมฆะ exampleabstractMethod ()
{
Console.WriteLine ("การเอาชนะตัวอย่างวิธีกวางของคลาส exampleAbstractClass");
}
}
ชั้นฐาน
{
การทดสอบโมฆะเสมือนสาธารณะ ()
{
Console.WriteLine ( "Base.Test");
}
}
คลาสที่ได้รับ: ฐาน
{
public override void Test ()
{
Console.WriteLine ( "Derived.Test");
}
}
วิธีการเสมือนถูกใช้สำหรับการดำเนินการตามความหลากหลายชนิด คลาสที่ได้รับมีความยืดหยุ่นในการใช้งานวิธีเสมือนของคลาสพื้นฐานอีกครั้งโดยใช้คีย์เวิร์ด override ทั้งเวอร์ชวลและนามธรรมไม่สามารถใช้ร่วมกับตัวดัดแปลงสแตติกหรือเสมือนหรือแทนที่
การเปรียบเทียบระหว่างวิธีเสมือนกับบทคัดย่อ:
วิธีการเสมือน | วิธีการบทคัดย่อ | |
คำนิยาม | วิธีการเสมือนถูกใช้สำหรับการดำเนินการตามความหลากหลายชนิด | วิธีการบทคัดย่อเป็นวิธีการที่ประกาศ แต่ไม่มีการใช้งานใด ๆ |
การดำเนินงาน | ใช่สามารถใช้งานได้ | ไม่ไม่สามารถใช้งานได้ |
จะต้องมีการแทนที่ | ไม่บังคับ | ภาคบังคับ |
คำหลักใช้เพื่อแยกความแตกต่างจากวิธีอื่น ๆ | เสมือน | บทคัดย่อ |
ชั้น | คลาสที่มีเมธอดเสมือนสามารถสร้างอินสแตนซ์ได้ | คลาสที่มีเมธอด abstract ไม่สามารถสร้างอินสแตนซ์ได้ สามารถสืบทอดได้เท่านั้น |
ขอบเขต | ขอบเขตของเมธอดเสมือนต่อสมาชิกเท่านั้น | ขอบเขตของเมธอด Abstract ให้กับสมาชิกและคลาส |
วิธีการที่จะดำเนินการ (ประเภทคลาสวัตถุฐาน) | การดำเนินการผู้ปกครองจะถูกเรียกเฉพาะในกรณีที่ไม่มีการใช้งานในชั้นรูปธรรม | การใช้งานคอนกรีต |
วิธีการที่จะดำเนินการ (ประเภทคลาสวัตถุ - วัตถุ) | การใช้งานคอนกรีต | การใช้งานคอนกรีต |