繁体   English   中英

通过扩展具体的父母有抽象的孩子的目的

[英]Purpose of having abstract child by extending concrete parent

有时,我遇到了一些课堂设计如下。

abstract class animal {
    public abstract void speak();
}

class dog extends animal {

    @Override
    public void speak() {
        // Do something.
    }

}

abstract class abstract_dog extends dog {
    @Override
    public abstract void speak();
}

我想知道,有一个abstract_dog类的目的是什么? 为什么我们将非抽象说话方法“转换”为抽象说法?

如果你想创建一个强制人们覆盖speak的基类,但是继承了Dog

我同意SLaks,并认为这将是一个真实的生活情况:

abstract class animal {
    public abstract void speak();
}

class dog extends animal {

    @Override
    public void speak() {
        // Dog says 'bark'
    }

}

abstract class abstract_dog extends dog {
    @Override
    public abstract void speak();
}

class poodle extends abstract_dog {
    @Override
    public void speak() {
        // poodle says 'yip yip'
    }
}

class great_dane extends abstract_dog {
    @Override
    public void speak() {
        // great dane says 'ruff ruff'
    }
}

我想如果你想让一个新的子类实现speak方法,而dog类可能有新的子类不必实现的其他方法,你会使用它。
了解更多有关您的确切情况将有助于确定此方案是否有更好的设计。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM