Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
1

How do I create a subclass in Lua?

Asked by
D3LTA_Y 72
6 years ago

I know the concepts of OOP, however, I do not know where and how to create the properties of the subclasses and create protected methods for these subclasses using Lua. Could you help me with this?

1 answer

Log in to vote
0
Answered by
Avigant 2374 Moderation Voter Community Moderator
6 years ago
Edited 6 years ago

I recommend checking out the inheritance section of my answer here: https://scriptinghelpers.org/questions/59107/what-is-object-oriented-programming-and-how-is-it-used#57533

In this way of implementing class-based OOP with single-inheritance, essentially, if there's no key in the created object, the __index event of the objec'ts metatable looks it up in the class, and if there's no key in the class, the __index event of the class's metatable looks it up in the superclass, and so on.

As for protected methods / member, one possible idea would be to set your __index metamethod as a function rather than a table shortcut, using a proxy table, and to call getfenv() to determine whether or not the calling function is the class itself or a subclass, and if it is, return a table of protected members which has the __index metamethod set to the class table, or if the calling function is not the class itself or a subclass, return a lookup in the normal class table.

Alternatively, when extending a class, you could set the __index metamethod to be a table of protected members of the superclass, and set the __index metamethod of the protected member table to be the public superclass table.

0
Thank you so much!! Have a nice day! D3LTA_Y 72 — 6y
Ad

Answer this question