版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/enjoy_sun_moon/article/details/80916633
<?php
class Foo{
public function test(){
var_dump('foo-test');
}
public function test2(){
var_dump('foo-test2');
}
static public function test3(){
var_dump('foo-test3');
}
static public function test4(){
var_dump('foo-test4');
}
static public function test5(){
var_dump('foo-test5');
}
static public function test6(){
var_dump('foo-test6');
}
public function test7(){
var_dump('foo-test7');
}
public function test8(){
var_dump('foo-test8');
}
}
class B extends Foo{
public function test(){
var_dump('b-test');
}
public function test2(){
var_dump('b-test2');
}
static public function test3(){
var_dump('b-test3');
}
static public function test4(){
var_dump('b-test4');
}
public function test9(){
parent::test3();
}
public function test10(){
parent::test4();
}
}
$B=new B();
$B->test(); //b-test 调用子类 覆盖父类
$B->test2();//b-test2 调用子类 覆盖父类
$B->test7();//foo-test7 调用父类 子类没有
$B->test8();//foo-test8 调用父类 子类没有
$B->test9();//foo-test7 调用子类 子类调用父类 self调用子类或父类中方法 parent只调用父类
$B->test10();//foo-test8 调用子类 子类调用父类 self调用子类或父类中方法 parent只调用父类
// $B::test();// b-test
// $B::test2();//b-test2
静态方法
foo::test3();//foo-test3 直接调用子类
foo::test4();//foo-test4 直接调用子类
B::test3();//b-test3 调用子类 覆盖父类
B::test4();//b-test4 调用子类 覆盖父类
B::test5();//foo-test3 调用父类 子类没有
B::test6();//foo-test4 调用父类 子类没有
?>
有几句补充的 就是$b->test() ===== $b::test() 虽然不知道为什么但是确实可以这么做
类外调用的话 只能通过子类去调用父类 好像不能直接去调用父类 这是我发现的不知道正确与否 静态方法类名::方法
parent和self即可调用公共方法又可调用静态方法