基本クラス:
abstract class Base
{
abstract public function getLenth();
abstract public function getName();
}
それから2つのクラス:
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';
}
}
それが1つの解決策です。次のように書き換えることができます。
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';
}
どちらのバージョンが優れているのですか?なぜですか?
編集:
私は2番目に投票します:短いです。しかし、定数の遅延静的バインディングがないJavaでどのように実行できるかは興味深い