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