80 likes | 274 Views
Polymorphism. EM-406 Java. Motivasyon. Bir işlem birden fazla tip üzerinde çalışabilir Metot temel tip arayüzünü kullanır İşlem çalışan metot tarafından yapılır. Upcasting. Bir objeye temel class larından bir objeymiş gibi davranmak
E N D
Polymorphism EM-406 Java
Motivasyon • Bir işlem birden fazla tip üzerinde çalışabilir • Metot temel tip arayüzünü kullanır • İşlem çalışan metot tarafından yapılır
Upcasting • Bir objeye temel class larından bir objeymiş gibi davranmak • Aynı class tan türeyen objelerin her biri için ayrı metot yazmak gerekmeyebilir
Metot Bağlama • Bir metot çağrıldığında hangi metot çalışır • Erken: Derleme esnasında • Geç/Dinamik/Runtime : Çalışma esnasında • Objeler hangi tipten olduklarını bildirirler • Java’da static ve/veya final hariç geç bağlama
Metot Bağlama • Shape sh = new Circle(); • sh.draw(); • Shape üzerindeki draw değil Circle üzerindeki draw çalışır • Belli bir noktada draw metoduna bağlı bir kod olabilir • Sisteme yeni şekiller eklenmesi bozulma yaratmaz
Private Override • Temel classtaki private bir metot alt classta tekrar tanımlanmaya çalışılırsa (override) nasıl bir davranış olur?
abstract • Temel classta anlamsız olan metotlar • shape.draw() ??? • Gövdesi olmayan metotlar abstract olur • abstract metodu olan classlar abstract olur • abstract classtan obje üretilmez
Constructor • Constructor içinden polymorphic metot çağrılırsa ne olur? • Obje için hafıza alanı hazırlanır • Temel class constructorları çağrılır • Bu aşamada bir tekrar tanımlanmış metot çağrılırsa boş döner. • Tanımlama sırasına göre değişkenler başlatılır. • Türemiş class constructor u çağrılır.