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

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

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

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

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

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

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、子类对象执行方法时,都有时只执行子类的;

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

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

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。

13、PHP面向对象2(方法的访问控制、子类继承、常量)_第1张图片

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

  • 访问可以通过类名直接访问
  • 类名赋予变量名,用变量名访问
  • 用实例化的对象访问
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是世界上最好的编程语言!

你可能感兴趣的:(php)