Java’da Kalıtım – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları
Kalıtımı Kullanma
Fundamental Java’da kalıtımın temellerinden bazılarını öğrendiniz ve aplet oluşturmak için kalıtımı kullanıyorsunuz. Şimdi kalıtımı daha ayrıntılı olarak inceleyeceğiz.
Kalıtım, yeni sınıflar oluşturmak için sınıf tanımlarını yeniden kullanmanıza olanak tanır. Kalıtım, aşağıda olduğu gibi, extends anahtar sözcüğü ile belirtilir.
Bu durumda, foo sınıfı, bar’ın genel değişkenlerini ve yöntemlerini devralır. Bir foo örneği, aslında foo tarafından tanımlanmış gibi, bar sınıfında tanımlanan bir genel yöntemi veya değişkeni kullanabilecektir. (Korunan değişkenler ve yöntemler de devralınır ve sonraki bölümde korumalı erişim hakkında bilgi edineceksiniz.)
foo sınıfının alt sınıf veya türetilmiş sınıf olduğu söylenir; bar sınıfı, üst sınıf, temel sınıf veya üst sınıftır. Kalıtımda neler olduğuna dair bir şemaya bakın.
Tahmin edebileceğiniz gibi, kodu bu şekilde yeniden kullanabilmek çok büyük bir zaman tasarrufu sağlayabilir. Kalıtımın bir başka avantajı da, bir üst sınıfın davranışındaki değişikliklerin otomatik olarak alt sınıflara yayılmasıdır, bu da kod geliştirme süresini kısaltabilir. Ancak kalıtımın kodu genişletilebilir ve yönetilebilir kılan bir zaman kazandırıcı olması için doğru şekilde kullanılması gerekir. Gerekli olduğu durumlar ve uygun olmadığı zamanlar vardır.
Ne Zaman Kullanılır?
Kalıtım, iki sınıf arasında bir “is-a” ilişkisi olduğunda uygundur. A ve B sınıfları arasında böyle bir ilişkinin olup olmadığını belirlemek için “A, B’dir” cümlesini oluşturun. Bu cümle mantıklıysa, alt sınıf olarak A ve üst sınıf olarak B olmak üzere kalıtım çağrılır.
Örneğin, bir insan bir memelidir, dolayısıyla bir İnsan sınıfı uygun şekilde bir Memeli sınıfından miras alır. Benzer şekilde, bir Bilgisayar bir ElectricPoweredDevice’dir, bu nedenle birinci sınıf ikincisinden miras alır.
Alt sınıf, üst sınıfa ekstra özellikler eklediğinden, bunlar uzantı ilişkilerinin örnekleridir. Diğer bir deyişle, bir insan, bir memelinin tüm özelliklerine ek olarak zeka, konuşma yeteneği ve diğer birkaç dikkate değer özelliğe sahiptir.
İkinci tür ilişki, uzmanlaşma olarak adlandırılır. Bu durumda, alt sınıf genellikle temel sınıfta bulunan yöntemleri geliştirir veya özelleştirir.
Örneğin, müzisyenler şu ya da bu türden enstrümanlar çalarlar ve bir Müzisyen sınıfının bu davranışı üretmek için play() yöntemi olacaktır. Şimdi, bir piyanist, tıpkı bir kemancı veya orkestra şefi gibi bir müzisyen türüdür, ancak her birinin farklı müzik çalma yöntemleri vardır ve bu nedenle alt sınıflar olarak, her biri Müzisyen sınıfının farklı bir uzmanlığını ifade eder.
Miras Ne Zaman Kullanılmamalıdır?
Kalıtım “has-a” ilişkileri için uygun değildir. Örneğin bir teknenin dümeni vardır; ancak, bir Rudder sınıfından Boat sınıfını devralmak, Rudder kodunu yeniden kullanmanın doğru yolu değildir. Bunun yerine, has-a ilişkisini yakalamak için Boat sınıfının bir Rudder nesnesi örneğine sahip olması gerekir. Boat, Rudder içerdiğinden konteyner sınıfı olarak adlandırılır.
Bazen sınıflar arasındaki ilişkiyi tanımlamak o kadar kolay değildir ve konteyner taşımacılığının yanı sıra genişleme ve uzmanlaşma unsurlarına sahip olabilir. Bu durumda, neyin işe yaradığını bulmak için deney yapmalısınız.
Java Kalıtım örnek sorular
kalıtım nedir
Nesne Tabanlı Programlama kalıtım nedir
Java base class
Java çoklu kalıtımı nasıl sağlar
Java’da classlar
Encapsulation java Nedir
hangi programlama dili çoklu mirası (multiple inheritance)
Kalıtım Ayrıntıları
Bu bölümde, Java’da kalıtımı kullanmayla ilgili daha fazla ayrıntıyı ele alacağız:
• Java nesne sisteminin kökü olan Object sınıfı
• Yöntem geçersiz kılma
• super anahtar sözcüğünü kullanma
• Son sınıflar ve yöntemler
Bu bölümü gözden geçirmekten ve gerektiğinde geri gelmekten çekinmeyin.
Nesne Sınıfı
Java.lang paketinde tanımlanan Object sınıfı, Java’nın sınıf hiyerarşisinin köküdür; diğer tüm sınıflar, Object’in alt sınıflarıdır. Bir üst sınıf, bir sınıf bildirimi tarafından (extends anahtar sözcüğüyle) belirtilmemişse, sınıf varsayılan olarak Object’i genişletir. Bu, Object’in genel ve korumalı yöntemlerinin tüm nesneler için miras alındığı anlamına gelir.
Object’te tanımlanan genel ve korumalı yöntemleri devralır. Herhangi bir sınıfın örneği “bir” nesne olduğundan, bu örtük kalıtım mantıklıdır ve Java’nın nesne sistemini birleştirmeye hizmet eder. Örneğin, bir genel nesneler koleksiyonunu uygulamak için bir Object dizisini kullanabilirsiniz.
Bu bölümde kullanmayacağımız Object yöntemleri, nesnelerin eşitliğini karşılaştırmak, nesneleri klonlamak, iş parçacıklarını senkronize etmek ve daha fazlası için kolaylıklar içerir.
Yöntemi Geçersiz Kılma
Bazen bir sınıfın diğerinden davranışları devralması mantıklıdır, ancak miras alınan bazı davranışları yeniden tanımlamak veya geçersiz kılmak isteyebilirsiniz. Bu durum uzmanlaşma ilişkilerinde sıklıkla karşımıza çıkar. Örneğin, bir Piyanist sınıfı, bir Müzisyen sınıfından play() yöntemini miras alır, ancak istenen belirli davranışı sağlamak için play() yöntemini geçersiz kılabilir.
Miras alınan bir yöntemi geçersiz kılmak için, onu alt sınıfta yeniden tanımlamanız yeterlidir. Geçersiz kılma yöntemi, orijinal sürümle aynı yöntem imzasına sahip olmalıdır. Aşağıda, Pianist üst sınıfından play(int) yöntemini geçersiz kılar, ancak starve() yöntemini geçersiz kılmaz.
Bu nedenle, bir Pianist örneği, Pianist’te tanımlanan play(int) yöntemini ve Musician’dan starve() yöntemini kullanacaktır. Pianist’ten miras alan herhangi bir sınıf (diyelim ki bir VirtuosoPianist) Pianist’te tanımlanan play(int) yöntemini miras alacaktır.
Bazen bir yöntemi geçersiz kıldınız, ancak yine de üst sınıftan sürümü çağırmanız gerekiyor. Bu super anahtar kelimesi ile mümkündür.
Anahtar Kelime
Bir sınıfın tanımı içinde kullanılan süper anahtar kelimesi, üst sınıf için mevcut olan değişkenlere ve yöntemlere başvurmanıza olanak tanır. Örnek olarak, önceki bölümde tanımlanan Piyanist sınıfından birini alt sınıfa ayıralım.
(VirtuosoPianist) sınıfının play(int) yöntemi, super kullanarak üst sınıfın (Piyanist) kullanabileceği play(int) yöntemini çağırır.
Ayrıca, süper kullanarak, üst sınıf için mevcut olan ancak sınıf tarafından gizlenen değişkenlere başvurabilirsiniz. Örneğin, VirtuosoPianist’te (a long) tanımlanan yearsOfStruggle değişkeni, aynı isimli değişkeni gizler. super anahtar sözcüğü, üst sınıf Pianist aracılığıyla miras alınan yearsOfStruggle’a (bir int) erişmenizi sağlar.
Web sitelerinizi, arama motorlarında en yukarı getirmek adına sizlere 3 adet paket öneriyoruz. Bu paketler sayesinde web siteleriniz aramalarda 1 yıl içerisinde en yukarıya tırmanacaktır.
1) Backlink Paketi 50 $ (Yıllık Ücret)
2) Hızlandırma Paketi 300 $ (Yıllık Ücret)
3) Kelime Yönlendirme Paketi 150 $ (Aylık Ücret)