[英]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.