上周末我读了一些关于接口,抽象类和设计原则的东西.最后我有点困惑,我试图建立一个我学到的(或者我以为我学到的)的例子.
这是我的例子:案例是模拟一个包含有关树的信息的类.
首先,我会做一个界面:
public interface Tree{
public void grow();
}
Run Code Online (Sandbox Code Playgroud)
该接口包含应由具体树实现的所有方法.到目前为止这么好,但是这样的树需要一些在所有树家族上共享的属性(变量).为此,我将使用一个抽象类:
public abstract class AbstractTree implements Tree {
private String barColor;
private int maxHeight;
private boolean isEvergreen;
}
Run Code Online (Sandbox Code Playgroud)
这是正确的方式,还是我不能就其他类中的属性(变量)签订合同?
属性部分完成后,我希望有3种类型的树.
因此,这些树"tpyes"中的每一个都可以具有单独的变量.
public class OakTreeImpl extends AbstractTree{
private String barColor;
private int maxHeight;
private boolean isEvergreen;
private String foo;
@Override
public void grow() {
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法在面向对象的设计原则中是否正确,或者我完全错了吗?