Mixins are a language feature.
A mixin is a class that contains methods for use by other classes without having to be the parent class of those other classes. How those other classes gain access to the mixin's methods depends on the language. Mixins are sometimes described as being "included" rather than "inherited". A mixin can also be viewed as an interface with implemented methods.
Languages with Mixins include Python, Ruby, TypeScript, Julia, Racket, Xtext
# https://easyaspython.com/mixins-for-fun-and-profit-cb9962760556
class EssentialFunctioner(LoggerMixin, object):
module A
def a1
end
def a2
end
end
module B
def b1
end
def b2
end
end
class Sample
include A
include B
def s1
end
end
samp = Sample.new
samp.a1
samp.a2
samp.b1
// https://www.typescriptlang.org/docs/handbook/mixins.html
class SmartObject implements Disposable, Activatable {
}
// Note: still need to do some runtime ops to make that work.
# Including the same code in different modules provides mixin-like behavior.
module Normal
include("mycode.jl")
end
module Testing
include("safe_operators.jl")
include("mycode.jl")
end
(mixin (interface-expr ...) (interface-expr ...)
class-clause ...)
grammar org.example.domainmodel.Domainmodel
with org.eclipse.xtext.common.Terminals