[英]Abstract class usage
在應用程序中使用抽象類時,我遇到了兩種可能的方法來訪問抽象類中的數據。 是否因為一個抽象類的上下文而優先於另一個?
public abstract class Example {
private String name;
public Example(String name) {
this.name = name;
}
//other methods that can be overridden in child classes
}
public class ExampleTwo extends Example {
public ExampleTwo() {
super("ExampleTwo");
}
}
還是在給定相同輸出的情況下,簡單地用值覆蓋返回方法。 例如:
public abstract class Example {
public abstract String getName();
//other methods that can be overridden in child classes
}
public class ExampleTwo extends Example {
@Override
public String getName() {
return "ExampleTwo";
}
}
您正在描述兩種不同的情況。 第一個name
是一個變量,該變量在構造函數中設置並使用其getter讀取。 第二個定義了一個getName
方法,該方法可以返回任何內容,例如隨機字符串。
首先,這兩種方法是完全不同的。 第一個示例永遠不會將name
變量公開給它的子級,因為它是private
。 您的第二個示例要求每個孩子都將getName
作為其API的一部分來實現。
最終,這取決於您要完成什么。
在第一種情況下,我假設您正在為類建立某種常規狀態,並且您的孩子需要向父級提供一些元數據,以便父級的方法可以正確響應。 想想動物等級制度; 您可以在父makeSound
中定義makeSound
,但每個孩子都會告訴它如何說話。
在第二種情況下,我更喜歡使用接口而不是抽象類,因為在這種方法中繼承不會帶來任何好處。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.