बहु-स्तरीय इनहेरिटेंस
उचित __index प्रत्यायोजन के साथ गहरी इनहेरिटेंस चेन का समर्थन करें।
बहु-स्तरीय इनहेरिटेंस, CoddyKit पर Lua Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Lua Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
एकल विरासत की समीक्षा
Child.__index = Parent निर्धारित करके एकल विरासत प्राप्त की जाती है। विधि खोज: यदि विधि Child में न मिले, तो __index के माध्यम से Parent में खोजें।
विरासत के लिए वर्ग-निर्माता का विस्तार
आधार वर्ग में :extend() विधि जोड़ें, जो मूल वर्ग से जुड़े उपवर्ग का निर्माण करे।
function Animal:extend()
local cls = {}
cls.__index = cls
setmetatable(cls, {__index = self})
cls.super = self
function cls:new(...)
local inst = setmetatable({}, cls)
if inst.init then inst:init(...) end
return inst
end
return cls
endउपवर्ग बनाना
पशु का उपवर्ग कुत्ता बनाएँ, उसके init को अध्यारोपित करें और नई विधियाँ जोड़ें।
local Dog = Animal:extend()
function Dog:init(name)
Dog.super.init(self, name, "Woof")
self.tricks = {}
end
function Dog:learnTrick(trick)
self.tricks[#self.tricks+1] = trick
end
local d = Dog:new("Rex")
d:learnTrick("sit")
d:speak() -- Rex says Woofबहु-स्तरीय शृंखला
डॉग का विस्तार करके GuideDog बनाएँ — यह तीन-स्तरीय विरासत शृंखला है।
local GuideDog = Dog:extend()
function GuideDog:init(name, owner)
GuideDog.super.init(self, name)
self.owner = owner
end
function GuideDog:guide()
print(self.name .. " guides " .. self.owner)
endमूल-वर्ग की विधियाँ बुलाना
अनंत पुनरावृत्ति से बचने के लिए मूल-वर्ग की विधि को हमेशा वर्ग संदर्भ के माध्यम से बुलाएँ, self के माध्यम से नहीं।
function Dog:init(name)
Dog.super.init(self, name, "Woof") -- explicit super call
endविधि समाधान क्रम
Lua __index शृंखलाओं के माध्यम से नीचे से ऊपर की ओर विधियों को हल करता है। GuideDog → डॉग → एनिमल → शून्य। जो सबसे पहले मिलता है, वही चुना जाता है।
विधियों का अध्यारोपण
अध्यारोपित करने के लिए उपवर्ग में उसी नाम की विधि परिभाषित करें। आंशिक अध्यारोपण के लिए मूल-वर्ग की विधि को स्पष्ट रूप से बुलाएँ।
function Dog:speak()
print(self.name .. " barks!")
Dog.super.speak(self) -- also call parent speak
endगहराई की सीमाएँ
बहुत गहरी विरासत शृंखलाएँ विधि खोज को धीमा करती हैं (हर स्तर पर एक __index चरण जुड़ता है)। 3-4 से अधिक स्तरों के लिए संयोजन को प्राथमिकता दें।
वर्ग सदस्यता जाँचना
यह जाँचने के लिए कि कोई उदाहरण किसी वर्ग से संबंधित है या नहीं, मेटाटेबल शृंखला में ऊपर की ओर जाएँ।
local function isA(instance, cls)
local mt = getmetatable(instance)
while mt do
if mt == cls then return true end
mt = getmetatable(mt)
end
return false
end
print(isA(d, Dog)) -- true
print(isA(d, Animal)) -- trueवर्ग सुरक्षित रखते हुए गहरी प्रतिलिपि
उदाहरणों की गहरी प्रतिलिपि बनाते समय मेटाटेबल सुरक्षित रखें, ताकि प्रतिलिपि अब भी सही वर्ग का उदाहरण रहे।
संयोजन को कब प्राथमिकता दें
वास्तविक “यह एक है” संबंधों के लिए विरासत का उपयोग करें (कुत्ता, पशु का एक प्रकार है)। “इसमें यह है” संबंधों या व्यवहारों के लचीले मिश्रण के लिए संयोजन (घटक तालिकाएँ) का उपयोग करें।
विरासत संबंधी प्रश्न
Lua में बहु-स्तरीय विरासत कैसे काम करती है?
पुनरावृत्ति: बहु-स्तरीय विरासत
:extend() विधि के साथ वर्ग-निर्माता का विस्तार करें, जो __index कड़ियों को शृंखलाबद्ध करती है। ClassName.super.method(self, ...) के साथ मूल-वर्ग की विधि को स्पष्ट रूप से बुलाएँ। मेटाटेबल शृंखला में ऊपर की ओर जाकर सदस्यता जाँचें।
एआई शिक्षक के साथ Lua सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 40
- पाठ
- 159
अक्सर पूछे जाने वाले प्रश्न
क्या “बहु-स्तरीय इनहेरिटेंस” पाठ निःशुल्क है?
हाँ — Lua Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “बहु-स्तरीय इनहेरिटेंस” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“बहु-स्तरीय इनहेरिटेंस” में मैं क्या सीखूँगा?
उचित __index प्रत्यायोजन के साथ गहरी इनहेरिटेंस चेन का समर्थन करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Lua Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Lua Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Lua Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“बहु-स्तरीय इनहेरिटेंस” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Lua Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Lua Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- बेस क्लास और कंस्ट्रक्टर डिज़ाइन
- बहु-स्तरीय इनहेरिटेंस
- मिक्सिन संयोजन और इंटरफ़ेस जाँच
- instanceof और प्रकार का आत्मनिरीक्षण