La dernière fois, j'ai écrit des articles sur l'héritage de classe et l'imbrication, Cette fois, j'écrirai des connaissances de base telles que les méthodes de classe.
Comme son nom l'indique, c'est une méthode qui peut être appelée par un objet de classe.
Il ne peut pas être appelé avec un objet instance. Par conséquent, un contraste courant est la «méthode de l'instance». Cela sera discuté plus tard.
Il existe les méthodes de définition suivantes.
Lorsque vous utilisez votre propre classe comme récepteur dans une méthode, utilisez «nom de classe» ou «self». Il peut être omis, mais «self» dans la définition ne peut pas être omis.
class Klass
def self.method_a
new
puts "created Klass instance"
end
end
Klass.method_a
# => created Klass instance
Tout ce qui est défini pendant ce temps est une méthode de classe Ceci est pratique lors de la définition de plusieurs éléments.
class Klass
class << self
def method_a
new
puts "created Klass instance"
end
end
end
Klass.method_a
# => created Klass instance
Au fait, vous pouvez le faire de la même manière.
class Klass
end
class << Klass
def method_a
new
puts "created Klass instance"
end
end
Klass.method_a
# => created Klass instance
Une méthode qui peut être appelée par un objet d'instance. Ceci est en contraste avec la méthode de classe précédente Il ne peut pas être appelé à partir d'un objet de classe.
La méthode de définition est la suivante.
class Klass
def method_a
puts "method_a called"
end
def method_b
method_a
puts "method_b called"
end
end
klass_instance = Klass.new
klass_instance.method_b
# => method_a called
# => method_b called
Une méthode spécifique à un objet. Il peut être défini en écrivant le nom de l'objet avant le nom de la méthode à définir. Notez que l'objet doit déjà exister lorsque vous le définissez.
class Klass
end
apple = Klass.new
orenge = Klass.new
def apple.tokui_method
puts "I'm apple"
end
apple.tokui_method
# => I'm apple
orenge.tokui_method
# => undefined method `tokui_method'
Si l'objet spécifié n'existe pas lors de sa définition, une erreur se produit.
class Klass
end
def apple.tokui_method
puts "I'm apple"
end
apple = Klass.new
apple.tokui_method
# => undefined local variable or method `apple' for main:Object (NameError)
L'appel de super
dans une méthode singulière appellera la méthode du même nom défini dans la classe.
Il y a aussi la commodité de pouvoir remplacer cette méthode.
class Klass
def my_name
puts "I'm fruits"
end
end
apple = Klass.new
orenge = Klass.new
def apple.my_name
super
puts "I'm apple"
end
apple.my_name
# => I'm fruits
# => I'm apple
orenge.my_name
# => I'm fruits
Recommended Posts