小编use*_*409的帖子

类扩展Abstract类实现Interface

上周末我读了一些关于接口,抽象类和设计原则的东西.最后我有点困惑,我试图建立一个我学到的(或者我以为我学到的)的例子.

这是我的例子:案例是模拟一个包含有关树的信息的类.

首先,我会做一个界面:

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)

这种方法在面向对象的设计原则中是否正确,或者我完全错了吗?

java abstract-class interface

9
推荐指数
3
解决办法
2613
查看次数

标签 统计

abstract-class ×1

interface ×1

java ×1