S.a. Arkadaşlar,
Bugün IS-A ve HAS-A konularını işlemeye çalışacağız. Öncelikle kalıtımın java için vazgeçilmez bir iş olduğunu kabullenmek gerekir. Peki nedir bu kalıtım ne işe yarar diye sorarsak , kısaca;
Bugün IS-A ve HAS-A konularını işlemeye çalışacağız. Öncelikle kalıtımın java için vazgeçilmez bir iş olduğunu kabullenmek gerekir. Peki nedir bu kalıtım ne işe yarar diye sorarsak , kısaca;
-
Kod tekrarından kurtuluruz
-
Kalıtım sayesinde bir sınıftan birden
fazla sınıf türetebiliriz.
Peki
IS-A ve HAS-A kalıtımın neresinde kalıyor diye sorarsanız biraz da onu
açıklayalım.
Bilindiği
gibi java’da sınıflar birbirinden türer demiştik. Bunu da kodla açıklamaya
çalışalım öyle daha kalıcı/anlaşılır olabiliriz.
public
class Car {
gasaBas(){}
}
public
class Ferrari extends Car {
turbo(){}
}
Arabalar diye bir sınıfımız var. Ve
burada birden çok markası olduğunu varsayalım ve her birinin de gaza bas()
özelliği olsun. Bu özellik her arabada bulunan bir şeydir. Bu nedenle Car
sınıfı altına koyup her defasında tekrar tekrar tanımlamaya gerek yoktur. Fakat
turbo() her arabada değil Ferrari’den olan bir özellik olduğu için Ferrari Classına
tanımlamış olduk ve Ferrari is a Car
olmuş oldu. Yani Ferrari bir arabadır. Kısaca is-a böyledir.
Şimdi de has-a kavramına
bakalım. Has-a kavramı da bir sınıfın farklı bir sınıftaki objesini
kullanmasını ifader. Yani yukarıdaki örnekte Ferrari’nin bir motoru olsun ve
biz bunu Car adı altında kullanalım. Fakat Ferrari olmadan motorunun da bir
önemi yoktur. Onlar birlikte ya vardırlar ya yoktur. Buradaki kavrama da has-a
diyoruz. Onu da kodlarsak dediğimiz havada kalmaz diye umuyorum.
public
class Motor extends Ferrari {
//kodlar
}
public class Motor {
Private Motor motor;
public void Motor(){
this.motor= new Motor();
}
}
Elimizden
geldiğince dilimiz döndüğünce konuyu anlatmaya çalıştık. Bir eksiğimiz olduysa
affola . Kolay Gelsin.
Kaynak
Hiç yorum yok:
Yorum Gönder