मैं एक प्लेटफ़ॉर्म से कोड की एक उचित मात्रा को पोर्ट करता हूं जो एब्सट्रैक्ट बेस क्लास को स्विफ्ट को सपोर्ट करता है और इसमें बहुत रन करता है। यदि आप वास्तव में चाहते हैं कि एक सार आधार वर्ग की कार्यक्षमता है, तो इसका मतलब है कि यह वर्ग साझा आधारित वर्ग कार्यक्षमता के कार्यान्वयन के रूप में दोनों कार्य करता है (अन्यथा यह सिर्फ एक इंटरफ़ेस / प्रोटोकॉल होगा) और यह उन तरीकों को परिभाषित करता है जिन्हें लागू करना चाहिए व्युत्पन्न वर्ग।
स्विफ्ट में ऐसा करने के लिए, आपको एक प्रोटोकॉल और बेस क्लास की आवश्यकता होगी।
protocol Thing
{
func sharedFunction()
func abstractFunction()
}
class BaseThing
{
func sharedFunction()
{
println("All classes share this implementation")
}
}
ध्यान दें कि बेस क्लास साझा विधि को लागू करता है, लेकिन प्रोटोकॉल को लागू नहीं करता है (क्योंकि यह सभी तरीकों को लागू नहीं करता है)।
फिर व्युत्पन्न वर्ग में:
class DerivedThing : BaseThing, Thing
{
func abstractFunction()
{
println("Derived classes implement this");
}
}
व्युत्पन्न वर्ग बेस क्लास से साझाकरण प्राप्त करता है, यह प्रोटोकॉल के उस हिस्से को संतुष्ट करने में मदद करता है, और प्रोटोकॉल को अभी भी सार वर्ग को लागू करने के लिए व्युत्पन्न वर्ग की आवश्यकता होती है।
इस पद्धति का एकमात्र वास्तविक पहलू यह है कि चूंकि बेस क्लास प्रोटोकॉल को लागू नहीं करता है, अगर आपके पास बेस क्लास विधि है, जिसे प्रोटोकॉल प्रॉपर्टी / विधि तक पहुंच की आवश्यकता है, तो आपको उस व्युत्पन्न वर्ग में ओवरराइड करना होगा, और वहां से कॉल करना होगा। बेस क्लास (सुपर के माध्यम से) गुजर रहा है self
ताकि बेस क्लास में प्रोटोकॉल का एक उदाहरण है जिसके साथ अपना काम करना है।
उदाहरण के लिए, यह बताता है कि साझाकरण को अमूर्त कॉल करने की आवश्यकता है। प्रोटोकॉल समान रहेगा, और कक्षाएं अब इस तरह दिखेंगी:
class BaseThing
{
func sharedFunction(thing: Thing)
{
println("All classes share this implementation")
thing.abstractFunction()
}
}
class DerivedThing : BaseThing, Thing
{
func sharedFunction()
{
super.sharedFunction(self)
}
func abstractFunction()
{
println("Derived classes implement this");
}
}
अब व्युत्पन्न वर्ग से साझाकरण प्रोटोकॉल के उस हिस्से को संतुष्ट कर रहा है, लेकिन व्युत्पन्न वर्ग अभी भी आधार वर्ग तर्क को यथोचित रूप से साझा करने में सक्षम है।