Rio*_*rdo 3 php oop inheritance super
我编写这样的代码给你一个例子
这是使用"$ this->"
<?php
class A{
public function example(){
echo "A";
}
}
class B extends A{
public function example2(){
$this->example();
}
}
$b = new B();
echo $b->example2();
?>
Run Code Online (Sandbox Code Playgroud)
这是使用父::
<?php
class A{
public function example(){
echo "A";
}
}
class B extends A{
public function example2(){
parent::example();
}
}
$b = new B();
echo $b->example2();
?>
Run Code Online (Sandbox Code Playgroud)
在OOP PHP中$ this->和parent ::之间有什么不同?
不同之处在于您可以访问基类的功能而不是库存实现.
class A {
public function example() {
echo "A";
}
public function foo() {
$this->example();
}
}
class B extends A {
public function example() {
echo "B";
}
public function bar() {
parent::example();
}
}
Run Code Online (Sandbox Code Playgroud)
这里有一些测试:
$a=new A();
$a->example(); // echos A
$a->foo(); // echos A
$b=new B();
$b->example(); // echos B
$b->foo(); // echos B
$b->bar(); // echos A
Run Code Online (Sandbox Code Playgroud)
parent::example()调用父类方法,$this->example()调用当前的类方法.
在您的示例中没有区别,因为类B不会覆盖example()方法.写这样的东西是很常见的(也许它会帮助你更好地理解这个概念):
class A {
public function example(){
echo 'A';
}
}
class B extends A {
public function example(){
echo 'B';
}
public function example2(){
$this->example();
}
public function example3() {
parent::example();
}
}
$b = new B();
$b->example2();//print B
$b->example3();//print A
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1169 次 |
| 最近记录: |