PHP面向对象的封装与继承
课程概要
public
公有的private
私有的protected
受保护的- 小结
1. public
公有的, public
可以省略
<?php
class MyClass { //声明一个类作为父类使用,将它的成员都声明为公有的
$var1=100; //声明一个私有的成员属性并给初值为100
function printHello() { //声明一个成员方法使用private关键字设置为公有的
echo "hello<br>"; //在方法中只有一条输出语句作为测试使用
}
}
class MyClass2 extends MyClass { //声明一个MyClass类的子类试图访问父类中的公有成员
function useProperty() //在类中声明一个公有方法,访问父类中的公有成员
{
echo "输出从父类继承过来的成员属性值".$this->var1."<br>"; //访问父类中的公有属性
$this->printHello(); //访问父类中的公有方法
}
}
$subObj=new MyClass2(); / /初例化出子类对象
$subObj->useProperty(); //调用子类对象中的方法实现对父类公有成员的访问
2. private
私有的
<?php
class MyClass { //声明一个类作为父类使用,将它的成员都声明为私有的
private $var1=100; //声明一个私有的成员属性并给初值为100
private function printHello() { //声明一个成员方法使用private关键字设置为私有的
echo "hello<br>"; //在方法中只有一条输出语句作为测试使用
}
}
class MyClass2 extends MyClass { //声明一个MyClass类的子类试图访问父类中的私有成员
function useProperty() //在类中声明一个公有方法,访问父类中的私有成员
{
echo "输出从父类继承过来的成员属性值".$this->var1."<br>"; //访问父类中的私有属性
$this->printHello(); //访问父类中的私有方法
}
}
$subObj=new MyClass2(); / /初例化出子类对象,结果出错
$subObj->useProperty(); //调用子类对象中的方法实现对父类私有成员的访问,结果出错
3. protected
受保护的
class MyClass { //声明一个类作为父类使用,将它的成员都声明为保护的
protected $var1=100; //声明一个保护的成员属性并给初值为100
protected function printHello() { //声明一个成员方法使用protected关键字设置为保护的
echo "hello<br>"; //在方法中只有一条输出语句作为测试使用
}
}
class MyClass2 extends MyClass { //声明一个MyClass类的子类试图访问父类中的保护成员
function useProperty() //在类中声明一个公有方法,访问父类中的保护成员
{
echo "输出从父类继承过来的成员属性值".$this->var1."<br>"; //访问父类中受保护的属性
$this->printHello(); //访问父类中受保护的方法
}
}
$subObj=new MyClass2(); //初例化出子类对象
$subObj->useProperty(); //调用子类对象中的方法实现对父类保护的成员访问
echo $subObj->var1; //试图访问类中受保护的成员,结果出错
4. 小结
修饰符 | private | protected | public(默认) |
---|---|---|---|
同一个类中 | OK | OK | OK |
类的子类中 | OK | OK | |
所有的外部成员 | OK |