13、PHP面向对象2(方法的访问控制、子类继承、常量)

本文介绍了PHP中类的方法访问修饰符,包括公有、私有和受保护的定义及使用场景。公有方法可在任何地方调用,受保护的方法限于本类和子类,而私有方法只能在定义类内部调用。同时,文章通过示例展示了常量的定义及不同方式的访问方式。
摘要由CSDN通过智能技术生成

1、类中的方法可以被定义为公有,私有或受保护。如果没有设置这些关键字,则该方法默认为公有。

public定义的方法,可以在类外使用。

protected定义的方法,只能在本类或子类的定义内使用。

private定义的方法,只能在本类的定义内使用。

私有的变量或方法不能被直接访问,但可以将其放入在一个公共的方法里面,实现间接访问。

<?php
class myClass{
    public function __construct(){}//公有的构造函数
    public function myPublic(){}//公有的方法
    protected function myProtected(){}
    private function myPrivate(){}
    function Foo()//默认为公有
    {
        $this->myPublic();
        $this->myProtected();
        $this->myPrivate();
    }
}

$mc=new myClass;
$mc->myPublic();
//$mc->myProtected();//致命错误
//$mc->myPrivate();//致命错误
$mc->Foo();//默认公有,可以执行

class mySubClass extends myClass
{
    function FooSub()
    {
        $this->myPublic();
        $this->myProtected();
//        $this->myPrivate();//致命错误
    }
}
$mcSub=new mySubClass;
$mcSub->myPublic();
$mcSub->FooSub();
?>

2、子类对象执行方法时,都有时只执行子类的;

父类与子类只有一个时,执行有的那一个;

执行子类没有的方法时,会执行父类相应名称的方法,并会执行方法内的父类私有方法和子类的公共方法,因为私有方法只能被相应的类执行。

<?php
class Bar
{
    public function test(){
        $this->testPrivate();
        $this->testPublic();
    }
    public function testPublic(){
        Echo "bar::testPublic\n";
    }
    private function testPrivate(){
        echo "bar::testPrivate\n";
    }
}

class Foo extends Bar
{
    public function testPublic(){
        echo "foo::testPublic\n";
    }
    private function testPrivate(){
        echo "foo::testPrivate\n";
    }
}

$myBar=new Bar;
$myBar->test();
echo "\n";
$myFoo=new Foo;
$myFoo->test();
$myFoo->testPublic();
?>

执行结果:执行子类foo的testpublic。

 3、类中常量用const定义。访问都用符号“::”。

  • 访问可以通过类名直接访问
  • 类名赋予变量名,用变量名访问
  • 用实例化的对象访问
<?php
class myClass{
    const c1="常量";
    function showConstant(){
        //echo $this->c1.PHP_EOL;
        echo self::c1.PHP_EOL;
    }
}

echo myClass::c1.PHP_EOL;//类名直接访问
$classname="myClass";//类名赋予变量名

echo $classname::c1.PHP_EOL;//用变量名访问

$class1=new myClass;

$class1->showConstant();

echo $class1::c1.PHP_EOL;//用实例访问
?>

 


PHP是世界上最好的编程语言!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值