Alt sınıflar
Coddy'nin Ruby Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 22 / 57.
Kalıtım, mevcut bir sınıf üzerine yeni bir sınıf oluşturur. class Dog < Animal, Dog sınıfını, onun üst sınıfı olan Animal sınıfının bir alt sınıfı yapar. Bir köpek, initialize dâhil olmak üzere bir hayvanın tüm metotlarına ve ayrıca Dog sınıfının eklediği metotlara sahiptir:
class Animal
attr_reader :name
def initialize(name)
@name = name
end
def eat
"#{name} is eating"
end
end
class Dog < Animal
def fetch
"#{name} fetches the ball"
end
end
rex = Dog.new("Rex")
puts rex.eat
puts rex.fetchÇıktı:
Rex is eating
Rex fetches the ballEklenen yöntemler yalnızca alt sınıfa aittir. Sıradan bir Animal bunlara sahip değildir ve Cat gibi kardeş bir sınıf, Dog sınıfının yöntemlerini göremez:
class Animal
def breathe
"breathing"
end
end
class Dog < Animal
def fetch
"fetching"
end
end
class Cat < Animal
end
puts Cat.new.breathe
begin
Cat.new.fetch
rescue NoMethodError => e
puts e.message
endÇıktı:
breathing
undefined method `fetch' for an instance of Catsuperclass bir sınıfın üst sınıfını belirtir. Bir Ruby sınıfının tam olarak bir üst sınıfı vardır ve < olmadan bildirilen bir sınıf, her nesneye to_s ve inspect gibi metotlar sağlayan Object sınıfından kalıtım alır:
class Animal
end
class Dog < Animal
end
puts Dog.superclass
puts Animal.superclass
puts Object.superclassÇıktı:
Animal
Object
BasicObjectKalıtım, bir türdür ilişkisine uyar: bir köpek bir hayvandır, bir tasarruf hesabı bir hesaptır. Paylaşılan davranış bir kez üst sınıfa konur ve her alt sınıf, onu farklı kılan özellikleri ekler. Bu bölümde her sınıf kendi dosyasında bulunur ve üst sınıfın dosyası önce yüklenir:
# main.rb
require_relative 'animal' # önce süper sınıf
require_relative 'dog' # class Dog < Animal Animal'e ihtiyaç duyar
require_relative 'cat'Görev
KolaySınıfları tamamlayın. Vehicle, bir name ve bir wheels sayısı depolar ve Mini has 4 wheels döndüren describe yöntemine sahiptir. Car ve Bike, initialize tanımlamayan Vehicle alt sınıflarıdır. Car, Mini says beep döndüren honk yöntemini; Bike ise BMX rings döndüren ring yöntemini ekler.
Sağlanan kod, car Mini veya bike BMX satırlarını okur, 4 tekerlekli bir Car veya 2 tekerlekli bir Bike oluşturur ve describe yönteminin sonucunu, sesi (honk veya ring) ve nesnenin sınıfının üst sınıfını yazdırır.
Kodunuz vehicle.rb, car.rb ve bike.rb dosyalarına gider. main.rb, sağlanan giriş/çıkış kodunu içerir ve düzenlenemez.
Kendin dene
require_relative 'vehicle'
require_relative 'car'
require_relative 'bike'
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input = []
while (line = gets)
input << line.chomp
end
input.each do |line|
kind, name = line.split(" ", 2)
if kind == "car"
v = Car.new(name, 4)
sound = v.honk
else
v = Bike.new(name, 2)
sound = v.ring
end
puts v.describe
puts sound
puts v.class.superclass
end
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Sınıflar ve Nesneler
Dosyalarla ÇalışmaSınıf TanımlamaÖrnek DeğişkenleriMetotlar ve selfto_s ve inspectÖzet - Kütüphane Kartı7Çok Biçimlilik ve Ördek Tiplemesi
Çok BiçimlilikÖrdek TiplemesiSoyut Metotlarcase ve SınıflarTekrar - Ödeme Yöntemleri2Erişimciler ve self
Okuyucular ve YazıcılarÖzel Setter'larMetotlarda selfKimlik ve EşitlikTekrar - Kişi Listesi5Kalıtım
Alt sınıflarMetotları geçersiz kılmasuper çağrısıis_a? ve üst sınıflarTekrar - Personel Maaşları8Özel Metotlar
Eşitlik ve hashOperatör Metotlarıİndeksleme ve EklemeÖzel KoleksiyonlarTekrar - Kesirler11Proje: Kütüphane Yönetimi
Kitaplar ve ÜyelerKitap Ödünç Alma3Sınıf Metotları ve Değişkenleri
Sınıf MetotlarıSınıf Örnek DeğişkenleriSabitlerFabrika MetotlarıTekrar - Kupon KodlarıKendi başına pratik yap: Online Ruby derleyicisi