作用域分辨运算符(::)

GOALSTAR 2008-02-10 04:50:44
在PHP4中,在没有声明任何实例的情况下访问类中的函数或者基类中的函数和变量很有用处。而 :: 运算符即用于此情况。


<?php
class A {
function example() {
echo "I am the original function A::example().<br />\n";
}
}

class B extends A {
function example() {
echo "I am the redefined function B::example().<br />\n";
A::example();
}
}

// A 类没有对象,这将输出
// I am the original function A::example().<br />
A::example();

// 建立一个 B 类的对象
$b = new B;

// 这将输出
// I am the redefined function B::example().<br />
// I am the original function A::example().<br />
这里我觉得有点奇怪,不是应该是覆盖A了么,应该只是输出
// I am the original function A::example().<br />

$b->example();
?>

上面这种情况在PHP5中是不是不能使用A::example();
...全文
154 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
张吉Jerry 2008-02-10
  • 打赏
  • 举报
回复
“这里我觉得有点奇怪,不是应该是覆盖A了么,应该只是输出”
貌似每什么奇怪的,echo输出一行,调用A::example()又输出一行,所以两行……
所谓覆盖,指的是$b=new B();后,$b->example()执行的是B::example()而不是A::example()。
子类中调用父类用parent::example();
meikeer 2008-02-10
  • 打赏
  • 举报
回复
也可以用

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧