‫Polimorfizm örneğine tekrar hoş geldiniz.
‫Bu videoda, her şeyden önce küçük bir meydan okumaya sahip olduğunuz farklı bir yaklaşım kullanacağım.
‫Kalıtımı biraz daha fazla veya biraz daha iyi anlamanıza yardımcı olacak bazı kodlar yazmalısınız.
‫Daha sonra poli formlara gireceğiz ve tüm bu programın bir parçasını oluşturacağız.
‫Bu yüzden lütfen devam edin ve kodu buradaki meydan okumaya göre yazmaya çalışın.
‫Bu yüzden videoyu duraklatın ve deneyin.
‫Tamam.
‫Umarım denemişsinizdir.
‫Bu yüzden yeni bir ed sınıfı oluşturacağım ve buna car adını vereceğim.
‫Ve bu sınıf sadece genel bir araba sınıfı olacak.
‫Ve özellikler içerebilir veya içermelidir.
‫Doğru.
‫Dediğim gibi, HP Prop adında bir özelliği olmalı ve bu bir tamsayı olmalı ve HP beygir gücü
‫olacak.
‫Peki bu araba ne kadar güçlü?
‫Ve sonra string türünde olan ve renk olan başka bir özellik?
‫Şimdi ihtiyacım olan şey bir kurucuya sahip olmak.
‫Bu yüzden HP ve rengi alan bir kamu aracı yaratacağım.
‫Burada bu HP noktasını HP ve bu renk noktasını da renk olarak ayarladım.
‫Yani bu renk bizim özellik rengimiz olacak ve HP de sınıfımızın ya da car türünden oluşturulan
‫nesnemizin HP'si olacak.
‫Şimdi bir sonraki yöntem ayrıntıları göster yöntemi olmalıdır.
‫Yani public void ayrıntıları gösterir.
‫Ve burada sadece konsola bir şeyler yazıyoruz.
‫Yani CW, HP artı HP olacak.
‫Ardından, renk gibi bir şey olması gereken renge sahibiz.
‫Elbette burada dize manipülasyonu kullandığım farklı bir yaklaşım kullanabilirdim, ancak ben sadece bu şekilde
‫tutacağım.
‫Çok basit.
‫Bir sonraki public void'dir ve adı repair'dir.
‫Ve bu iki yöntemi daha sonra değiştireceğiz.
‫Yani endişelenme.
‫Ama şimdilik, onları çok basit tutmak istedim.
‫Şimdiye kadar kullandığımız yaklaşımlarla, bu çok biçimliliğin ne yaptığını daha açık hale getirecek ve burada sadece
‫arabanın tamir edildiğini söylüyor.
‫Pekala, işte bu bizim arabamız ve bu da temel sınıfımız.
‫Ve şimdi diğer iki sınıfa ihtiyacımız var, bu da BMW, BMW sınıfımız.
‫Ve burada, dediğim gibi, model adında ek bir özelliğimiz var ve bu bir dize modeli.
‫Şimdi, bir başka husus da özel bir üye olan markaydı.
‫Yani özel bir marka ve adı BMW.
‫Şimdi bir yapıcıya, yani public bir BMW'ye ihtiyacımız var.
‫Ve bunu yapmadan önce, yapıcıyı oluşturmadan önce, car'dan miras almak istiyorum.
‫Yani şimdi BMW'm arabadan miras kalacak.
‫Ve burada ihtiyacım olan şey HPP, sonra
‫renk ve model ve burada ve virgül.
‫Yani yapabileceğim şey, HPP'yi HPP'ye ayarlayabilirim, hatta devam edebilir ve aynı şeyi renk için de yapabilirim.
‫Bu renk olacak ve bizim özelliğimiz olan model, model olmalıdır.
‫Yani buradaki, oradaki, bunu kullanıyorum çünkü bu nesne için istiyorum ve aynı şeyi burada da yapabilirim
‫ve burada da yapabilirim.
‫Gördüğünüz gibi, bunları burada oluşturmamış olsam da, yine de kullanabilirim.
‫Şimdi, burada henüz görmediğiniz bir şey var, bu da temel.
‫Böylece burada base anahtar sözcüğünü kullanabilirim ve sonra basitçe şunu söyleyebilirim, tamam, HPP'yi ve temel sınıfımın rengini
‫kullanmak istiyorum ve artık bu iki satıra ihtiyacım yok, böylece bunlardan bile kurtulabilirim.
‫Şimdi görebileceğiniz gibi, hata da ortadan kalkıyor.
‫Şimdi, temel sınıfımızın, yani arabamızın temel yapıcısını kullanan
‫bir yapıcı oluşturduk.
‫Sadece bu yapıcıyı kullanacak ve sadece modeli ekleyecektir.
‫Şimdi tüm işi, tüm işi yapan çok kısa bir kurucumuz var.
‫Şimdi ihtiyacım olan şey, dediğim gibi, bir boşluk gösterisi detayı.
‫Ve burada sadece ayrıntıları göstermek istiyorum ve yöntemi buradan ya da yöntemin girişinden kopyalayacağım.
‫Ve burada ilk önce marka olacak.
‫Yani marka artı marka artı HP.
‫Şimdi sadece bazı ek ayrıntıları gösterecek.
‫Ve burada, gördüğünüz gibi, ayrıntıları göster, gizler, devralınan üye araba ayrıntıları göster, gizleme amaçlandıysa
‫yeni anahtar kelimeyi kullanın.
‫Bu da bir sonraki videoda ele alacağımız bir konu.
‫Ancak şimdilik onarım yöntemini de oluşturalım, public void repair.
‫Ve burada sadece BMW gibi bir şey yazmalı ve
‫burada tamir edildi.
‫Peki şu elimdeki sıfır nedir?
‫Model bu.
‫Bu yüzden sadece arabanın modelini bilmek istiyorum ve diyelim ki BMW, Z, Phi, az4 veya
‫MX üç veya MX beş tamir edildi.
‫Yani bunun yapması gereken şey bu.
‫Ve şimdi başka bir sınıfa ihtiyacım var, buradakine oldukça benzeyen başka bir sınıfa.
‫Bu yüzden yeni bir sınıf oluşturacağım ve adını Audi koyacağım.
‫Ve basit olması için, çoğu şeyi buraya kopyalayacağım, aslında tüm sınıfı, çünkü çok
‫benzer olacak.
‫Burada farklı olan şey, bunun bir Audi olması ve yapıcı olarak Audi'ye sahip olmamız ve elbette car'dan miras
‫alması gerektiğidir.
‫Şimdi bu tamamlandı ve şimdi polimorfizm kısmı geliyor.
‫Yani otomobil türünde bir Audi'miz var, yine otomobil türünde bir BMW'miz var.
‫Ve araba olan bu temel sınıfımız var ve şimdi devam edip bunun birden fazla nesnesini oluşturabiliriz.
‫Şimdi oraya varır varmaz çok daha anlamlı olacak.
‫Şimdi devam edelim ve cars adında yeni bir değişken oluşturalım; bu değişken yeni bir araba listesi olacak.
‫Ve bu bir araba listesi olsa da, araba sınıfından, tüm bunları oluşturabiliriz ve BMW burada.
‫Böylece, diyelim ki mavi ve A dört olan bir Audi yaratabilirsiniz.
‫Sonra yeni bir BMW'miz var, diyelim ki 250 HP ve diyelim ki kırmızı bir araba ve bir MX üç.
‫Çok biçimliliğin bir parçası da budur; örneğin listelerle çalışırken temel sınıf yerine alt sınıfları ya da temel
‫sınıf yerine türeyen sınıfları kullanabilirsiniz ve genel olarak ne demek istediğimi
‫anlayacaksınız.
‫Şimdi yapacağım şey, arabalar listemdeki tüm arabalarımı kontrol edecek olan
‫bir for each döngüsü çalıştırmak olacak.
‫Ve sadece araba onarımı gibi bir şey yazacak veya bir onarım yöntemi çağıracak.
‫Pekala, bunu arayalım ya da çalıştıralım.
‫Ancak bunu yapmadan önce doğru anahtarı konsolize etmemiz gerekiyor.
‫Çünkü aksi takdirde programımız kapanacaktır.
‫İşte buradasın.
‫Araba tamir edildi.
‫Şimdi burada araba yöntemini çağırıyor.
‫Hangisi buradaki?
‫Araba tamir edildi.
‫Dolayısıyla bu onarım yöntemini çağırmıyor ve BMW'nin onarıldığı ya da burada aslında
‫audio ya da Audi olması gereken bu onarım yöntemini de çağırmıyor.
‫Audi tamir edildi.
‫Peki şimdi neden BMW ve Audi'nin onarım yöntemi değil de bizim aracımızın onarım yöntemi deniyor,
‫bunun iki şeyle ilgisi var.
‫Bunlardan bir tanesi, sanal olmayan bir onarım boşluğuna sahip olmamızdır.
‫Yani bunu sanal void repair yaparsak, şimdi yapabileceğimiz şey, örneğin burada bunu geçersiz kılmaktır.
‫Artık onarım yöntemini geçersiz kılabiliriz.
‫Kodu tekrar çalıştırırsak ne olacak?
‫Göreceğiz.
‫Araba tamir edildi.
‫Bu bizim Audi'miz, ilki.
‫Daha sonra BMW M 3 tamir edildi ve bu da ikincisi.
‫Bunun nedeni de BMW sınıfımızın onarım yöntemini geçersiz kılmış olmasıdır.
‫Dolayısıyla, bu yöntemi alıp sanal hale getirebiliriz ve bu da türeten sınıflarda geçersiz kılmamıza olanak
‫tanır.
‫Biz de burada bunu yaptık.
‫İşte şimdi çok biçimliliğin iki yönü var.
‫Yani çok biçimlilik ağı bir ve ODI ve VW, Porsche, sahip olmak istediğiniz farklı sınıfların hepsi bir arabanın
‫beklendiği her yerde kullanılabilir.
‫Dolayısıyla, buradaki bu sınıftan, buradaki araba sınıfımızdan miras aldıklarında, bunun yerine basitçe bunu kullanabiliriz.
‫Çok biçimliliğin ikinci yönü ise sanal yöntemin temel sınıfta değil, türetilen sınıfların
‫her birinde çağrılabilmesidir.
‫Bu, BMW ile yaptığımız bir şey ve şimdi aynı şeyi buradaki siparişimizle de yapabiliriz.
‫Bu yüzden bunu da geçersiz kılacağım.
‫Geçersiz kılma, geçersiz kılma, onarma.
‫Şimdi tekrar çalıştıralım.
‫Ve şimdi her ikisi de markalarını ve modellerini göstermelidir.
‫Böylece Audi A4 ve BMW M3'ün onarıldığını görüyoruz.
‫Yine de çok biçimlilikle ilgili bir şey daha var.
‫Dolayısıyla, temel sınıf üyelerini yeni üyelerle gizlemek istiyorsanız, new anahtar sözcüğünü kullanabilirsiniz.
‫Diyelim ki araba sınıfımızda sadece bir void olan bu void show details metodumuz var.
‫Sanal bir boşluk değil.
‫Ve şimdi bunu geçersiz kılmak istersem, yani burada geçersiz kılma ile yaptığımız anlamda geçersiz
‫kılma değil.
‫Ancak aslında bir BMW kullandığımda bunun yerine bu yöntemi kullanmak istiyorum ve eskisini geçersiz kılmak anlamında değil, sadece
‫arabadan olanı gizlemek ve bunun yerine ayrıntıları göster'i kullanmak istiyorum.
‫Yeni anahtar kelimeyi kullanabilirim.
‫Yani bu basitçe şunu söyleyecektir: Tamam, bu gösteri detaylarının araba gösterisi detaylarına göre önceliği
‫vardır.
‫Yani geçersiz kılmıyor ama önceliklerini yeniden belirliyor.
‫Peki şimdi nasıl çekim yapacağım?
‫Bu gösteri detay yöntemini mi gösterin yoksa bu gösteri yöntemini mi kullanın?
‫Peki, 200 beygir gücünde yeni bir BMW otomobili olacak olan yeni bir BMW pmwz3 yaratalım.
‫Siyah yapalım.
‫Ve sonra az3 modeli.
‫Ayrıca bir Audi yaratalım, Audi a 3.
‫Diyelim ki 100 beygir gücünde yeni bir Audi olacak.
‫Ve bu yeşil.
‫Bir araba için çok garip bir renk.
‫Ve burada üç modeliniz var.
‫Şimdi, BMW'yi çalıştıralım ve ayrıntıları burada gösterelim.
‫Aynı şey Audi için de geçerli.
‫Audi.
‫Ayrıntıları göstermek için üç.
‫O zaman bunu çalıştıralım.
‫Ve HP 200'ü görüyorsunuz, siyah renk HP 100 yeşil renk.
‫Gördüğünüz gibi, araba şovu ayrıntıları yöntemini çağırıyor ve BMW'den olanı çağırmıyor.
‫Bunun nedeni de onu bir otomobil olarak yaratmış olmamız, ancak otomobil olarak yeni bir BMW olması.
‫Şimdi aynı şeyi yaparsak, devam edelim ve bir BMW MX beş yaratalım,
‫bu bir araba olmayacak, ama bu sefer bir B, M W yeni BMW ve bu, diyelim ki 330 beygir gücüne sahip.
‫Beyaz ve bir MX 5.
‫Şimdi bu B M W MX beş nokta ayrıntıları göster yöntemini çağırırsam, bana markayı da gösterecek, böylece
‫markamız BMW, HP 330 rengimiz beyaz olacak.
‫Ve ilk olanlar.
‫Yani buradakiler.
‫Onlar da ayrıntılı bir yöntem göstermek zorundaydılar, ancak onlar arabanınkini kullandılar ve şimdi BMW'ninki BMW'ninkini
‫kullanıyor.
‫Dolayısıyla, new BMW demiş olsak da, dahili olarak BMW olan bir araba nesnesi oluşturmak için hala araba sınıfını
‫kullanıyoruz, ancak BMW yöntemlerini değil araba yöntemlerini çağırıyoruz, yalnızca devam edip onu bir BMW olarak
‫oluşturursak new yöntemini çağırıyoruz.
‫Yani buradaki new, basitçe diyor ki, tamam, eğer benden bir nesne yaratırsan, devam et ve onu new olarak
‫yaz.
‫Eğer bunu yapmazsanız, o zaman devam edin ve sadece arabaların veya araba sınıfının yöntemini temel sınıfla birlikte
‫kullanın.
‫Ancak temel sınıfımın show details yöntemini BMW nesnemde çağırmak istersem ne olur?
‫O zaman şunları yapabilirim.
‫Devam edip araba B olarak adlandıracağım bir araba yaratabilirim, bu bir BMW m five olacak.
‫Ama öyle olacak.
‫Bir araba.
‫Burada döküm kullanıyorum, böylece BMW'mi bir arabaya dönüştürüyorum ve şimdi devam edip BMW MX five'imin
‫ayrıntılarını göstermek için araba b noktasını kullanabilirim.
‫Ya da arabamın bir kez daha hpp 330 renk beyaz olması için.
‫İşte BMW 5'imiz burada.
‫Öyleyse neden bu yeni anahtar kelimeyi üyelerinize gizleme ve kullanma yaklaşımını kullanıyorsunuz?
‫Türetilmiş üyenizin temel sınıftaki bir üyeyle aynı ada sahip olmasını istiyorsanız,
‫ancak sanal bir çağrıya katılmasını istemiyorsanız bunu kullanırsınız.
‫İşte o zaman burada gördüğümüz bu yeni anahtar kelimeyi kullanırsınız.
‫Aksi takdirde, bunu geçersiz kılmak istiyorsanız, buradaki geçersiz kılma yaklaşımını veya yöntem bildiriminizde
‫bu geçersiz kılma anahtar sözcüğünü kullanabilirsiniz.
‫Tamam.
‫Yani bu oldukça bir şey ya da çok biçimlilik.
‫Bir sonraki videoda bunu nasıl önleyebileceğimize bakacağız.
‫Yani bir yöntemin hiçbir zaman geçersiz kılınmasını istemiyorsanız.
‫Bunu temel sınıfımızda yapmanın bir yolu var.
‫Bir sonraki videoda görüşmek üzere.