我想創建一個繼承(擴展)另一個PHP類的類,該類具有受保護的const,我想在我的擴展類中重寫該類。我創建了一個父類(該示例為A)和一個繼承類(該示例為B)。定義class A了protected const(名為CST)。class B也會覆蓋此const。調用從display繼承的A繼承的方法類B時self::CST,打印的值是來自A的CST值,而不是B中覆蓋的const CST。我使用名為的靜態屬性觀察到了相同的行為$var。似乎self在方法中使用的總是引用定義類(在我的示例中為A),而不是用于調用靜態方法的類。class A{ protected static $var = 1; protected const CST = 1; public static function printVar() { print self::$var . "\n"; } public static function printCST() { print self::CST . "\n"; }}class B extends A{ protected static $var = 2; protected const CST =2;}A::printVar();A::printCST();B::printVar();B::printCST();有沒有一種方法可以讓我的靜態方法printCST()在調用時顯示2B::printCST()而無需重寫該方法class B,從而提高OOP的代碼可重用性?
添加回答
舉報
0/150
提交
取消