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