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是世界上最好的编程语言!