php 父类静态 怎么调用 子类静态??
2个回答
展开全部
直接用 类名::方法名/变量名
class Test{
private static $a=123;
private static function Do(){
echo "啦啦啦啦啦";
}
}
echo Test::$a;
Test::Do();
在那都可以这样调用. 在自己里面调用就用self::$a self::Do()
class Test{
private static $a=123;
private static function Do(){
echo "啦啦啦啦啦";
}
}
echo Test::$a;
Test::Do();
在那都可以这样调用. 在自己里面调用就用self::$a self::Do()
追问
我设计中 有好多子类 继承 一个父类 而父类中的静态函数 要 分别调用子类的静态函数
我原来用self::child_class_static_function() 结果调用的是父类的,我把子类的哪个静态函数申明为虚静态,php打警告。 有人说 用 get_class($this) 方法 但是我的父类的哪个就是静态的,没有对象的概念。 怎么 搞 呀? 如果没有办法 只能用 傻傻的方法了 父类静态函数 分别拷贝到子类去了。
追答
在面向对象的概念里面.我个人的是,不应该出现父类调用子类的现象.子类的方法对于父类是不可见的.
父类是先于子类设计的,子类是继承自父类,理论上子类的修改是不影响父类的.如果出现父类调用子类的现象,这个继承的意义就被破坏了.修改某一子类,就修改了父类,从而出现很多不可预知的现象,有可能破坏其它子类.
如果非得在父类调用子类的方法,建议在子类覆盖/重载父类的某一方法,从而使得局限在这一子类中,出现父类调用子类的现象.
-------------------
另外,PHP类中的静态变量,静态方法.可以看作是一个命名方式不同的,普通的变量定义和函数定义.它们的使用方式 仅仅是 类名::变量/方法.和具体对象没有绝对的关系.就是说它们是不需要经过实例化就能够使用的变量和方法.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询