Informationen zur Ruby-Vererbung

Programmierstudientagebuch

  1. Juli 2020 Progate Lv.175 RubyⅤ

Erbe

Sie können eine Klasse von Grund auf neu erstellen, aber Sie können eine vorhandene Klasse verwenden und eine neue Klasse basierend auf dieser Klasse erstellen. Auf diese Weise können die gemeinsamen Teile zusammengesetzt und der Code effizient geschrieben werden. Das Erstellen einer neuen Klasse basierend auf einer bestimmten Klasse wird als Vererbung bezeichnet. Sie können eine neue Klasse definieren, indem Sie eine andere Klasse mit "class new class name <original class name" erben. Die neue Klasse heißt "untergeordnete Klasse" und die ursprüngliche Klasse heißt "übergeordnete Klasse". Die Instanzmethode der übergeordneten Klasse wird vererbt.

food.rb


require "./menu"
class Food < Menu
end

Wenn eine Instanz einer untergeordneten Klasse erbt, erbt die untergeordnete Klasse die Instanzmethode der übergeordneten Klasse.

index.rb


food1=Food.new
puts food1.name
puts food2.info

menu.rb


class Menu
  attr_accessor :name 
  #wird bearbeitet
  def info
    return "#{self.name} #{self.price}Kreis"
  end
end

Instanzvariable hinzufügen

Verwenden Sie "attr_accessor" wie zuvor, um Instanzvariablen zu untergeordneten Klassen hinzuzufügen.

menu.rb


class Menu
  attr_accessor :name 
  attr_accessor :price
end

Weil die Food-Klasse von der Menu-Klasse erbt. Es hat drei Instanzvariablen "Name, Preis, Kalorie".

food.rb


class Food < Menu
  #Fügen Sie der Lebensmittelklasse Kalorien hinzu
  attr_accessor :calorie
end

Instanzmethoden können auf die gleiche Weise hinzugefügt werden.

überschreiben

Sie können eine Methode überschreiben, indem Sie in der untergeordneten Klasse eine Methode definieren, die denselben Namen wie die übergeordnete Methode hat. Dies wird als Überschreiben bezeichnet.

index.rb(Rufen Sie die Methode auf)


food1~Food.new(...)
food1.calorie=700
puts food1.info

menu.rb(Elternklasse)


class Menu
  #wird bearbeitet
  def info
    #wird bearbeitet
  end
end

food.rb(Kinderklasse)


class Food < Menu
  #wird bearbeitet
  #Überschreibmethode (Überschreibmethode heißt)
  def info
    #wird bearbeitet
  end
end

Die untergeordnete Klasseninstanz ruft vorzugsweise die in der untergeordneten Klasse definierte Methode auf. Wenn die untergeordnete Klasse und die übergeordnete Klasse Methoden mit demselben Namen haben, wird der Inhalt der Methode der untergeordneten Klasse überschrieben. Sie können es auch mit der Initialisierungsmethode überschreiben.

super Sie können eine Methode mit demselben Namen in der übergeordneten Klasse aufrufen, indem Sie in der überschriebenen Methode "super" festlegen. Da super eine Methode aufruft, muss ein Argument gemäß der Methode der übergeordneten Klasse an super übergeben werden.

menu.rb


class Menu
  attr_accessor :name 
  attr_accessor :price
  def initialize(name:, price:)
    self.name=name
    self.price=price
  end
end

food.js


class Food < Menu
  attr_accessor :calorie
  def initialize(name:, price:, calorie:)
    super(name: name, price: price)
    self.calorie=calorie
  end
end
0711.png

Datumsklasse

Eine Klasse, die Datumsangaben verarbeitet. Die Date-Klasse wurde bereits von Ruby vorbereitet und kann verwendet werden, ohne eine Klasse zu definieren, indem das Datum mit "require" gelesen wird. Bereits vorbereitete Klassen erfordern eine andere Schreibweise als andere </ font>

index.rb


# "/date"ist nicht!
reruire "date"

Datumsklasseninstanz

Sie können eine Instanz mit "Date.new" erstellen. Sie können eine Instanz des heutigen Datums mit "Date.today" erstellen.

index.rb


require "date"
#Erstellen Sie eine Datumsmethode, indem Sie "Jahr / Monat / Tag" als Argument übergeben
date1=Date.new(2020,7,8)
puts date

Konsole


2020-07-08

Datumsklasseninstanzmethode

Es gibt viele Instanzmethoden. Es ist die "Sonntag?" - Methode, die als boolescher Wert übergeben wird, ob es Sonntag ist oder nicht.

index.rb


require "date"
date1=date1.new(2020,7,11)
puts date1.sunday?

Konsole


false

Klassenmethode

Eine Methode zum Aufrufen einer Klasse. Der Ort von "heute" von "Date.today". Klassenmethoden können mit def class name.method name definiert werden. Schreiben Sie im Gegensatz zur Instanzmethode den Klassennamen vor den Methodennamen. Rufen Sie die Klassenmethode mit class name.method name auf.

menu.rb


class Menu
  #wird bearbeitet
  #Gibt einen booleschen Wert zurück, der angibt, ob das heutige Datum Sonntag ist
  def Menu.is_discount_day?  
    #Datumsinstanz mit Informationen zum heutigen Datum
    today=Date.today
    return today.sunday
  end
end
puts Menu.is_discount_day?

Rufen Sie eine Klassenmethode innerhalb einer Instanzmethode auf

menu.rb


class Menu
  #wird bearbeitet
  def get_total_price  #Instanzmethode
    if Menu.discount_day?  #Aufrufen einer Klassenmethode
      #wird bearbeitet
    end
  end
end
0711-1.png

Recommended Posts

Informationen zur Ruby-Vererbung
Über die Vererbung
Informationen zur Klassenvererbung.
Über Ruby Hash
Über Ruby-Arrays
Über Rubinblock
Über Ruby Hash
Über Java-Vererbung
Über objektorientierte Vererbung und über Ertrag Ruby
Über Ruby-Symbole
Über Ruby-Methoden
Über Rubys Kernel-Modul
Informationen zu Ruby-Fehlermeldungen
Informationen zur Behandlung von Ruby-Ausnahmen
Über Ruby Hash (Fortsetzung)
Informationen zu Ruby-Instanzmethoden
Informationen zur Vererbung (Java Silver)
Ruby-Vererbung und -Delegierung
Über Kapselung und Vererbung
Über Logik nachdenken Ruby
Erbe
Schreiben Sie die Klassenvererbung in Ruby
Erbe
Erläuterung des Ruby Range-Objekts
Über reguläre Ausdrücke in Ruby
Über Ruby-Hashes und -Symbole
Ruby über verschiedene iterative Prozesse
Über =
Über Ruby und Objektmodell
Informationen zu Ruby-Klassen und -Instanzen
Erläuterung zum Ruby String-Objekt
Über das Verhalten von Ruby Hash # ==
Über Ruby einfache Anführungszeichen und doppelte Anführungszeichen
Informationen zum Ruby-Produktoperator (&) und zum Summenoperator (|)
[Super Einführung] Über Symbole in Ruby
Erklärt Ruby Array-Objekte
Über method.invoke
Rubin lernen 4
Über attr_accessor
[Ruby] Array
Über Hinemos
Rubin lernen 5
Ruby-Grundlagen
Über Docker
Ruby Review 2
Rubinzusatz
Über Schienen 6
Über den Frühling ③
Ruby lernen 3