一个基类:
abstract class Base
{
abstract public function getLenth();
abstract public function getName();
}
它的两个类:
final class ObjA extends Base
{
public function getLenth()
{
return 1;
}
public function getName()
{
return 'Object A';
}
}
.
final class ObjB extends Base
{
public function getLenth()
{
return 6;
}
public function getName()
{
return 'Object B';
}
}
那是一种解决方案。它可以重写为:
class Base
{
public function getLenth()
{
return static::LENGTH;
}
public function getName()
{
return static::NAME;
}
}
.
final class ObjA extends Base
{
const LENGTH = 1;
const NAME = 'Object A';
}
.
final class ObjB extends Base
{
const LENGTH = 6;
const NAME = 'Object B';
}
哪个版本更好,为什么?
编辑:
我投票给第二个:更短。但有趣的是,它怎么能用 Java 来完成,其中没有常量的后期静态绑定