Miras alma (Inheritance), başka bir sınıfın değişkenlerini ve methotlarını kullanabilme işlemine miras alma veya kalıtım denir. Daha önce işlemiş olduğumuz Sınıflar ve Nesneler konusunda bahsettiğimiz Insan sınıfına ek olarak oluşturulan Öğretmen ve Öğrenci sınıflarının Insan sınıfına ait özellikleri kullanabileceğinden bahsetmiştik. Oluşturduğumuz görseli tekrar incelersek;
Miras alma işlemi class YeniSınıfAdı(miras alıncak sınıf) şeklinde yapılır.
Öğretmen ve Öğrenci sınıfları Insan sınıfından miras alacaktır. Bunları yapalım;
class Insan():
okul="Ankara Ünv."
def __init__(self,isim,dogumTarihi,emailAdresi):
self.isim=isim
self.dogumTarihi=dogumTarihi
self.emailAdresi=emailAdresi
def yasHesaplama(self):
return 2021-self.dogumTarihi
def ozetBilgi(self):
return "Özet bilgiler, okul: {} isim: {} doğum tarihi:{} email adresi:{}".format(self.okul,self.isim,self.dogumTarihi,self.emailAdresi)
class Ogretmen(Insan): #Insan sınıfından miras aldı.
def __init__(self,isim,dogumTarihi,emailAdresi,maas): #Öğretmen sınıfında kullanılacak değişkenler burada tanımlanır(Miras alacağı sınıfın değişkenleri de dahil)
Insan.__init__(self,isim,dogumTarihi,emailAdresi)
self.maas=maas
class Ogrenci(Insan):#Insan sınıfından miras aldı.
def __init__(self,isim,dogumTarihi,emailAdresi,ogrenciNo,sinif):#Ogrenci sınıfında kullanılacak değişkenler burada tanımlanır(Miras alacağı sınıfın değişkenleri de dahil)
Insan.__init__(self,isim,dogumTarihi,emailAdresi)
self.ogrenciNo=ogrenciNo
self.sinif=sinif
#Örneklendirme işlemi yapıldı
ogretmen1=Ogretmen("Mustafa",1987,"m@gmail.com",5000)
ogrenci1=Ogrenci("Defne",2000,"d@gmail.com","60","2.Sınıf")
print(ogretmen1.dogumTarihi)
print(ogrenci1.dogumTarihi)
Çıktı:
1987 2000
#Öğretmen ve öğrenic sınıflarında yasHesaplama adında bir fonksiyon oluşturulmadı ama Insan sınıfından miras aldığı
#için Insan sınıfına ait tüm methotları kullanabilmektedir.
print(ogretmen1.yasHesaplama())
print(ogrenci1.yasHesaplama())
Çıktı:
34 21
print(ogretmen1.ozetBilgi())
print(ogrenci1.ozetBilgi())
Çıktı:
Özet bilgiler, okul: Ankara Ünv. isim: Mustafa doğum tarihi:1987 email adresi:m@gmail.com Özet bilgiler, okul: Ankara Ünv. isim: Defne doğum tarihi:2000 email adresi:d@gmail.com
print(ogretmen1.maas)
print(ogrenci1.sinif)
Çıktı:
5000 2.Sınıf
Özet olarak; yukarıdaki örnek içersinde de bahsettiğimiz gibi bir sınıf diğer bir sınıftan miras alıyorsa o sınıfa ait tüm değişkenleri, methotları kullanabilmektedir. Karmaşık projelerde miras olayını kullanmak büyük avantajlar sağlayacaktır.