Bu sayede daha kolay kavranabileceğine inanıyorum.
Örnek olarak Word ve Excel belgelerini yazdıracak bir Printer'a sahip olduğumuzu varsayalım.
Bunu sınıf (class) olarak aşağıdaki gibi gösterelim...
Excel ve Word sınıfları(class) print() metodu kullanıyor olsun.
public class Excel { public void print() {
}
} |
1
2
3
4
5
6
7
| public class Word { public void print() { } }
Printer sınıfımızda aşağıdaki gibi olsun.
|
1
2
3
4
5
6
7
8
9
10
11
12
| public class Printer { public void printExcel(Excel excel) { excel.print(); } public void printWord(Word word) { word.print(); } }
Yukarıda gördüğünüz gibi her birini class olarak yazdık.
Ve bunları print edecek olan Printer sınıfımız herbirini ayrı ayrı printExcel() ve printWord() diye metod kullandık.. Soru şu: Ya PDF olarak da Print etmek isteseydik?
CVP_1: PDF sınıfı (class) oluştur.Sonra Printer sınıfının içine PDF sınıfı için
yeniden printPdf() metodu oluştur.
İYİDE kardeşim!!! Ya yeni bir document formatında daha yazdırmak isteseydik!
Ozaman aynı hamallığı yeniden herbiri için tekrar Printer içinde aynı işi
yapmasına rağmen printX() deyip metod eklmemiz gerekecek
CVP_2: Öyleyse yeni bir document format için sınıfımı oluşturur.Daha sonra
Printer içersinde polymorphism uygularız!!
Nasıl mı şöyle!
Öncelikle Word,execel, vs. bunların ortak özelligi document ' dır.
Kalıtım(inheritance) kullanacagız ve böylece alt sınıfların
mirasına da ortak olacağız.
Kodunu görelim....
Word ve Excel sınıfları Document sınıfına extend ederek genişletilmiş oldu
|
Hiç yorum yok:
Yorum Gönder