Yanıtlar:
Elbette.
Bir sınıf özetini bildirmek, yalnızca onun kendi başına somutlaştırılmasına izin vermemeniz anlamına gelir.
Bir yöntem soyutunun bildirilmesi, alt sınıfların o yöntem için bir uygulama sağlaması gerektiği anlamına gelir.
İkisi ayrı kavramlardır, ancak tabii ki soyut olmayan bir sınıfta soyut bir yönteme sahip olamazsınız. final
Yöntemlerle soyut sınıflara bile sahip olabilirsiniz, ancak bunun tersi asla olamaz.
Evet, bunu yapabilirsin. Neden bunu yapmayı denemiyorsun?
Evet yapabilirsin. Java'da kullanılan soyut sınıf, sınıfın bir nesnesini oluşturamayacağınızı belirtir. Ve alt sınıfların bu yöntem için bir uygulama sağlamaları gereken soyut bir yöntem.
Böylece soyut bir sınıfı herhangi bir soyut yöntem kullanmadan kolayca tanımlayabilirsiniz.
Ornek olarak :
public abstract class AbstractClass{
public String nonAbstractMethodOne(String param1,String param2){
String param = param1 + param2;
return param;
}
public static void nonAbstractMethodTwo(String param){
System.out.println("Value of param is "+param);
}
}
Bu iyi.
EVET Herhangi bir soyut yöntem olmadan soyut sınıf oluşturabilirsiniz, soyut yöntem olmadan soyut sınıfın en iyi örneği HttpServlet'dir.
Soyut Yöntem gövdesi olmayan bir yöntemdir. soyut zorunludur ANCAK soyut sınıfı bildirdiyseniz, sınıf içinde soyut yöntemi bildirmek zorunlu değildir.
Soyut sınıf nesneleri yaratamazsınız, bu da onun somutlaştırılamayacağı anlamına gelir.
Evet, kendi başına gerçekleştiremeyeceğiniz bir sınıfı, yalnızca halihazırda uygulamaları olan yöntemlerle bildirebilirsiniz. Bu, ileride soyut yöntemler eklemek istiyorsanız veya sınıfın soyut özellikleri olmamasına rağmen doğrudan başlatılmasını istemiyorsanız yararlı olacaktır.
evet, herhangi bir soyut yöntem olmadan soyut bir sınıf ilan edebiliriz. Bir sınıfı soyut olarak bildirmenin amacı, sınıfı somutlaştırmak değildir.
yani iki durum
1) soyut yöntemlerle soyut sınıf.
bu tür sınıflar, bu soyut sınıftan bir sınıfı miras almalı ve sınıfımızdaki soyut yöntemleri geçersiz kılmalıyız, örn: GenricServlet sınıfı
2) soyut yöntemler içermeyen soyut sınıf.
Bu tür sınıflar için, bu soyut sınıftan bir sınıf miras almalıyız, örn: HttpServlet sınıfı yapmanın amacı, mantığınızı çocuk sınıfta uygulamazsanız ana mantığı elde edebilirsiniz.
Evet, her ikisi de bağımsız kavramlar olduğu için Soyut Yöntemler olmadan soyut bir sınıfa sahip olabiliriz. Bir sınıf soyut bildirmek, kendi başına somutlaştırılamayacağı ve yalnızca alt sınıflara ayrılabileceği anlamına gelir. Bir yöntem özetinin bildirilmesi, Yöntemin alt sınıfta tanımlanacağı anlamına gelir.
evet bunu yapabilirsin.
sınıf soyutunu bildirmek, sınıfın başka herhangi bir sınıf tarafından somutlaştırılmayacağı anlamına gelir.
ve bunun içinde en az bir soyut yöntem bulunmalıdır ve bunun anlamı, eğer yöntemi tamamından bildirmiyorsanız, bu sınıfta soyut yöntem bildirebilirsiniz.
misal:
public abstract class abs {
protected int cx = 0, cy = 0;
public void p() {
System.out.print("hello");
}
}
bu kesinlikle işe yarayacak.
Evet yapabilirsin. Bazen, bunu yapmanın amacının ne olduğu sorusu size sorulabilir. Cevap şudur: Bazen sınıfın kendi başına somutlaştırılmasını kısıtlamamız gerekir. Bu durumda, kullanıcının Abstract sınıfımızı genişletmesini ve alt sınıfı başlatmasını istiyoruz.
Evet, soyut bir yöntem olmadan soyut bir sınıf tanımlayabilirsiniz. Ancak, içinde hiçbir yöntem yoksa, bir arayüzle gitmeniz daha iyi olabilir.
Yapabilirsin, aklımdaki soru daha fazla sormalıyım. En başından beri sert ve hızlı bir cevap olmadığını söyleyeceğim. Mevcut durumunuz için doğru olanı yapın.
Bana göre miras, bir 'bir' ilişkisidir. Daha özelleşmiş alt türler (Alsas, Kaniş, vb.) İle genişletilebilecek bir köpek sınıfı hayal edin. Bu durumda, köpek sınıfını soyutlamak, alt türler köpekler olduğu için yapılacak doğru şey olabilir. Şimdi köpeklerin bir tasmaya ihtiyacı olduğunu hayal edelim. Bu durumda kalıtım bir anlam ifade etmiyor: Köpekler ve tasmalar arasında 'bir' ilişkisinin olması saçmalıktır. Bu kesinlikle bir 'var' ilişkisi, yaka işbirliği yapılan bir nesnedir. Sadece köpeklerin sahip olabilmesi için tasmayı soyutlamak mantıklı değil.
Sıklıkla soyut metotları olmayan soyut sınıfların gerçekten bir 'has-a' ilişkisini ifade ettiğini görüyorum. Bu durumlarda, genellikle kalıtım kullanılmadan kodun daha iyi faktörlendirilebileceğini görüyorum. Ayrıca, soyut yöntemi olmayan soyut sınıfların genellikle bir kod kokusu olduğunu ve en azından bir kod incelemesinde sorulan sorulara yol açması gerektiğini gördüm.
Yine, bu tamamen özneldir. Soyut metotları olmayan soyut bir sınıfın anlamlı olduğu durumlar olabilir, bu tamamen yoruma ve gerekçelendirmeye bağlıdır. Üzerinde çalıştığınız şey için en iyi kararı verin.
Gerçekte, soyut bir sınıfın herhangi bir soyut metodu yoksa hiçbir anlamı yoktur. Soyut bir sınıf, bir baba gibidir. Bu babanın bazı özellikleri ve davranışları var, çocukken babanın çocuğu olmak istediğinizde, baba çocuğa (siz) böyle olmalı diyor, bu bizim MOTO'muz ve yapmak istemiyorsan sen benim çocuğum değil.
WindowDecorator
veCoffeeDecorator
vardırabstract
sınıfları, fakat ikisi de bir içermektedirabstract
yöntemi.