[Ruby] Klassenmethoden, Instanzmethoden usw.

Einführung

Letztes Mal schrieb ich Artikel über Klassenvererbung und Verschachtelung. Dieses Mal werde ich Grundkenntnisse wie Klassenmethoden schreiben.

Methode

Klassenmethode

Wie der Name schon sagt, handelt es sich um eine Methode, die von einem Klassenobjekt aufgerufen werden kann.

Es kann nicht mit einem Instanzobjekt aufgerufen werden. Ein häufiger Kontrast ist daher die "Instanzmethode". Dies wird später besprochen.

Es gibt die folgenden Methoden zur Definition.

Stellen Sie sich selbst vor. Zum Methodennamen bei der Definition der Methode

Wenn Sie Ihre eigene Klasse als Empfänger in einer Methode verwenden, verwenden Sie "Klassenname" oder "Selbst". Es kann weggelassen werden, aber "self" in der Definition kann nicht weggelassen werden.

class Klass
  def self.method_a
    new
    puts "created Klass instance"
  end
end

Klass.method_a
# => created Klass instance
in Klasse << Selbst einschließen, Ende

Alles, was in dieser Zeit definiert wird, ist eine Klassenmethode Dies ist praktisch, wenn Sie mehrere Elemente definieren.

class Klass
  class << self
    def method_a
      new
      puts "created Klass instance"
    end
  end
end

Klass.method_a
# => created Klass instance

Übrigens können Sie es auf ähnliche Weise so machen.

class Klass
end

class << Klass
  def method_a
    new
    puts "created Klass instance"
  end
end

Klass.method_a
# => created Klass instance

Instanzmethode

Eine Methode, die von einem Instanzobjekt aufgerufen werden kann. Dies steht im Gegensatz zur vorherigen Klassenmethode Es kann nicht von einem Klassenobjekt aufgerufen werden.

Die Definitionsmethode ist wie folgt.

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

Singuläre Methode

Eine objektspezifische Methode. Sie kann definiert werden, indem der Objektname vor den zu definierenden Methodennamen geschrieben wird. Beachten Sie, dass das Objekt bereits vorhanden sein muss, wenn Sie es definieren.

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'

Wenn das angegebene Objekt beim Definieren nicht vorhanden ist, tritt ein Fehler auf.

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)

Wenn Sie innerhalb einer singulären Methode "super" aufrufen, wird die in der Klasse definierte Methode mit demselben Namen aufgerufen. Es besteht auch die Möglichkeit, diese Methode überschreiben zu können.

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

Ende

Recommended Posts

[Ruby] Klassenmethoden, Instanzmethoden usw.
[Ruby] -Methode, Instanzmethode ...
Informationen zu Ruby-Instanzmethoden
[Ruby] Grundkenntnisse über Klasseninstanzvariablen usw.
Was sind Ruby-Klassenmethoden?
Java-Klassenmethoden
String-Klassenmethoden
Über Ruby-Methoden
Informationen zum Aufrufen von Instanzmethoden
[Ruby] Bezieht sich self auf eine Klasse oder eine Instanz?
Instanzerstellung, Konstruktoren, Felder usw.
[Ruby] Was ist eine Instanz?
[Ruby] Singuläre Methoden und singuläre Klassen
Ruby-Methoden und -Klassen (grundlegend)
[Ruby] Beziehung zwischen Elternklasse und Kinderklasse. Beziehung zwischen Klasse und Instanz.
Der Unterschied zwischen der Ruby-Instanzmethode und der Klassenmethode ist leicht zu verstehen.
Unterschied zwischen Instanzmethode und Klassenmethode
Verschiedene Methoden der Java String Klasse
Schreiben Sie Ruby-Methoden mit C (Teil 1)
Ruby-Standardeingabe und verschiedene Methoden
Ruby Convenience-Methode für junge Ingenieure
Unterschied zwischen Instanzvariable und Klassenvariable
[Ruby] Grundlagen zu Datum, Uhrzeit und Datumszeit
Verschiedene Methoden der String-Klasse
Verwendung von Klassenmethoden [Java]
Ruby-Methoden, die häufig in Rails verwendet werden