যদি আমরা ধরে নিই যে বেস ক্লাসের জন্য খাঁটি ইন্টারফেস শ্রেণি হওয়া বাঞ্ছনীয় নয় এবং নীচে থেকে 2 টি উদাহরণ ব্যবহার করে, যা বিমূর্ত বা ভার্চুয়াল পদ্ধতি শ্রেণীর সংজ্ঞাটি ব্যবহার করে আরও ভাল পদ্ধতির?
"বিমূর্ত" সংস্করণটির সুবিধাটি হ'ল এটি সম্ভবত পরিষ্কার দেখায় এবং উদ্ভূত শ্রেণিকে আশার অর্থপূর্ণ বাস্তবায়ন করতে বাধ্য করে।
"ভার্চুয়াল" সংস্করণটির সুবিধা হ'ল এটি সহজেই অন্যান্য মডিউলগুলির দ্বারা টানা যায় এবং বিমূর্ত সংস্করণের মতো অন্তর্নিহিত কাঠামোর একটি গুচ্ছ যুক্ত না করে পরীক্ষার জন্য ব্যবহার করা যেতে পারে।
বিমূর্ত সংস্করণ:
public abstract class AbstractVersion
{
public abstract ReturnType Method1();
public abstract ReturnType Method2();
.
.
public abstract ReturnType MethodN();
//////////////////////////////////////////////
// Other class implementation stuff is here
//////////////////////////////////////////////
}
ভার্চুয়াল সংস্করণ:
public class VirtualVersion
{
public virtual ReturnType Method1()
{
return ReturnType.NotImplemented;
}
public virtual ReturnType Method2()
{
return ReturnType.NotImplemented;
}
.
.
public virtual ReturnType MethodN()
{
return ReturnType.NotImplemented;
}
//////////////////////////////////////////////
// Other class implementation stuff is here
//////////////////////////////////////////////
}
return ReturnType.NotImplemented
? সিরিয়াসলি? আপনি যদি সংকলনের সময় অযুহিত প্রকারটি প্রত্যাখ্যান করতে না পারেন (আপনি পারেন; বিমূর্ত পদ্ধতি ব্যবহার করতে পারেন) কমপক্ষে একটি ব্যতিক্রম ছুঁড়ে ফেলুন।