浅析php面向对象public private protected 访问修饰符
PHP面向对象编程中的访问修饰符
在PHP面向对象编程中,访问修饰符是用于控制类成员(包括属性和方法)的访问权限的关键字。它们决定了哪些代码可以访问和修改这些成员。PHP中的访问修饰符主要有三种:public(公共的)、protected(受保护的)和private(私有的)。
当一个类没有指定成员的访问修饰符时,默认就是public的访问权限。这意味着这些成员在任何地方都可以被访问和修改。
被声明为protected的成员,只允许该类的子类进行访问。这意味着只有继承了这个类的子类才能访问这些成员,而类的外部则无法直接访问。
被定义为private的成员,对于类内部所有成员都可见,没有访问限制。但对类外部来说,这些成员是不可见的,无法被访问或修改。
下面通过一个简单的示例来演示这些访问修饰符的使用:
假设我们有一个名为Woman的类,其中包含了三个成员变量:name(公共的)、age(受保护的)和height(私有的)。还有一个公共方法info()和一个私有方法say()。
```php
class Woman {
public $name = "gaojin"; // 公共属性,任何地方都可以访问
protected $age = "22"; // 受保护属性,只有子类可以访问
private $height = "170"; // 私有属性,仅在类内部可见
function info() { // 公共方法
echo $this->name;
}
private function say() { // 私有方法,只能在类内部调用
echo "这是私有的方法";
}
}
```
如果我们尝试在类的外部直接访问受保护或私有属性,将会报错。同样,私有方法也无法在类的外部被调用。如果有一个子类继承了该类,子类就可以访问父类的公共和受保护成员。例如:
```php
class Girl extends Woman {
function info() { // 可以重新定义父类的public和protected方法
echo $this->name; // 输出父类的公共属性name的值
echo $this->age; // 输出父类的受保护属性age的值(在子类内部可以访问)
// 尝试访问私有属性height会报错,因为即使在子类内部也无法直接访问私有属性。
}
function say() { // 子类可以定义自己的方法,但不能定义父类的私有方法
echo "我是女孩"; // 输出子类的自定义消息
}
}
```
通过创建Girl类的实例并调用其方法,我们可以观察到不同访问修饰符对类成员的影响。需要注意的是,私有成员无法在子类中直接访问或修改,子类只能继承公共和受保护成员。这有助于保护类的内部结构不被外部代码干扰,同时允许子类扩展和定制父类的功能。
编程语言
- 浅析php面向对象public private protected 访问修饰符
- jquery+CSS3实现淘宝移动网页菜单效果
- DedeCMS 5.7 sp1远程文件包含漏洞(CVE-2015-4553)
- jQuery中DOM操作原则实例分析
- php使用composer常见问题及解决办法
- php简单日历函数
- 使用BootStrap进行轮播图的制作
- PHP原生函数一定好吗?
- javascript 正则表达式去空行方法
- PHP使用redis实现统计缓存mysql压力的方法
- ASP.NET中 PlaceHolder 控件的使用方法
- 解析php 版获取重定向后的地址(代码)
- PHP多进程简单实例小结
- Lumen timezone 时区设置方法(慢了8个小时)
- PHPMailer ThinkPHP实现自动发送邮件功能
- javascript中Date()函数在各浏览器中的显示效果