是否有任何明显的区别为什么使用抽象扩展如果我们可以在普通类中做同样的事情,除非它没有提供例如。抽象类扩展和普通类之间的区别延伸
abstract class Survivalneeds {
abstract public function eat(); // everyone eats but different foods which would probably work as contract
public function breathe() {
// everyone inhale o2 exhale co2 only for animals
}
}
现在
class human extends Survivalneeds {
protected function eat() {
//sometimes eat goat
// contract
}
breathe()// already extending having same functionality inhale o2 and exhale co2
}
class goat extends Survivalneeds{
protected function eat() {
//wee eat greens
// contract
}
breathe()// already extending having same functionality inhale o2 and exhale co2
}
现在相同的功能,可以通过正常类由除合同法延长理所当然的合同,我们可以使用的界面也。
所以我们创造的抽象只是因为它在这里不可实例化? –
抽象方法也非常有用,检查模板方法模式[link](https://sourcemaking.com/design_patterns/template_method) – Nautilus