PHP类与对象中的private访问控制的疑问
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";
}
}
$myFoo = new foo();
$myFoo->test(); // Bar::testPrivate
// Foo::testPublic
为啥第一行会输出Bar::testPrivate呢?
一些资料:
http://www.jb51.net/article/31709.htm
还有php官网上,关于这段代码的贡献者回复中,也找到了一条:
http://www.php.net/manual/zh/language.oop5.visibility.php#87413
相关推荐
-
浅谈php中的访问修饰符private、protected、public的作用范围
1. private 只能在类内部使用 2. protected 可以在类内部和继承类里使用.类外部不能使用[即实例化后的对象无法调用] 3. public 全部范围适用. 4.子类复写父类中的方法时,子类中的 访问修饰符的范围要大于等于 父类的[ 继承只能发扬光大,至少保持不变.不可以丢失东西.] 以上这篇浅谈php中的访问修饰符private.protected.public的作用范围就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
-
php class中public,private,protected的区别以及实例分析
一,public,private,protected的区别public:权限是最大的,可以内部调用,实例调用等.protected: 受保护类型,用于本类和继承类调用.private: 私有类型,只有在本类中使用. 二,实例 复制代码 代码如下: <?phperror_reporting(E_ALL);class test{ public $public; private $private; protected $protected; static $instance; public func
-
浅析php面向对象public private protected 访问修饰符
PHP中有三种访问修饰符,分别是: public(公共的.默认) protected(受保护的) private(私有的)public(公共的.默认)在PHP5中如果类没有指定成员的访问修饰符,默认就是public的访问权限.protected(受保护的)被声明为protected的成员,只允许该类的子类进行访问.private(私有的 ) 被定义为private的成员,对于类内部所有成员都可见,没有访问限制.对类外部不允许访问. 图解demo 复制代码 代码如下: cl
-
php类中private属性继承问题分析
请仔细看这句话 如果父类有私有的属性.那么父类的方法只为父类的私有属性服务. 下面通过一系列列子来加深理解. 这个例子看起来很奇怪,在子类中重新定义了一个属性$sal,系统却返回了父类的属性. 复制代码 代码如下: <? class employee{ private $sal=3000; //protected $sal=3000; public function getSal(){ return $this->sal; } } class Manager extends employee
-
如何直接访问php实例对象中的private属性详解
前言 本文主要介绍了关于如何直接访问php实例对象中private属性的相关内容,在介绍关键部分之前,我们先回顾一下php面向对象的访问控制. 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的.被定义为公有的类成员可以在任何地方被访问.被定义为受保护的类成员则可以被其自身以及其子类和父类访问.被定义为私有的类成员则只能被其定义所在的类访问. 类属性必须定义为公有,受保护,私有之一.如果用 var 定义,则被视为公
-
反射调用private方法实践(php、java)
单测中有个普遍性的问题,被侧类中的private方法无法直接调用.小拽在处理过程中通过反射改变方法权限,进行单测,分享一下,直接上代码. 简单被测试类 生成一个简单的被测试类,只有个private方法. 复制代码 代码如下: <?php/** * 崔小涣单测的基本模板. * * @author cuihuan * @date 2015/11/12 22:15:31 * @version $Revision:1.0$ **/class MyClass {/** * 私有方法 * * @param
-
PHP类与对象中的private访问控制的疑问
复制代码 代码如下: 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 ext
-
C++简单又轻松的讲解类和对象中友元函数
目录 友元 浅解概念 友元目的 友元的三种实现 全局函数做友元 类做友元 成员函数做友元 注意事项 总结 友元 用到关键字 friend 浅解概念 举一个非常实际的例子,假如端午节到了你煮了两种粽子,一种是普通的糯米粽子,一种是特殊的五花肉粽子,糯米粽只要是客人都可以品尝,而五花肉棕只限好朋友品尝,这时候就可以用到友元的知识了.在程序里,有些私有属性也想让类外特殊的一些函数或者类访问,就要用到友元函数. 友元目的 让一个函数或者类,访问另一个类的私有属性 友元的三种实现 全局函数.成员函数.类都
-
从C语言中读取Python 类文件对象
问题 你要写C扩展来读取来自任何Python类文件对象中的数据(比如普通文件.StringIO对象等). 解决方案 要读取一个类文件对象的数据,你需要重复调用 read() 方法,然后正确的解码获得的数据. 下面是一个C扩展函数例子,仅仅只是读取一个类文件对象中的所有数据并将其输出到标准输出: #define CHUNK_SIZE 8192 /* Consume a "file-like" object and write bytes to stdout */ static PyObj
-
进一步深入Ruby中的类与对象概念
Ruby是纯面向对象的语言,所有项目似乎要Ruby中为一个对象.Ruby中的每个值是一个对象,即使是最原始的东西:字符串,数字甚至true和false.即使是一个类本身是一个对象,它是Class类的一个实例.本章将通过所有功能涉及到Ruby的面向对象. 类是用来指定对象的形式,它结合了数据表示和方法操纵这些数据,转换成一个整齐的包.在一个类的数据和方法,被称为类的成员. Ruby类的定义: 定义一个类,定义的数据类型的草图. 这实际上并不定义任何数据,但它定义的类名字的意思什么,即是什么类的对象
-
C++非继承时函数成员访问属性和类继承过程中的访问控制
目录 一.非继承时public.protected和private成员的访问属性 二.C++类继承过程中访问控制 一.非继承时public.protected和private成员的访问属性 C++中保护成员使用protected进行声明,那么protected.public和private三者有什么区别呢? 先说结论:非继承时,protected成员和private成员没有任何区别,都是类内部可以直接访问它们.类外部的类对象不可访问它们.类内部的类对象可以访问它们:相比之下,public成员在类
-
详解php中的类与对象(继承)
简介 在php中,类型的继承使用extends关键字,而且最多只能继承一个父类,php不支持多继承. class MyClass { public $dat = 0; public function __construct($dat) { $this->dat = $dat; } public function getDat() { return "$this->dat\n"; } } class MySubClass extends MyClass { public fu
-
java中如何实现对类的对象进行排序
我们需要对类按照类中的某一个属性(或者多个属性)来对类的对象进行排序,有两种方法可以实现,一种方法是类实现Comparable<T>接口,然后调用Collections.sort(List)方法进行排序,另一种方法是类不实现Comparable<T>接口,而在排序时使用Collections.sort(List, Comparator<T>)方法,并实现其中的Comparator<T>接口. 先创建一个简单的学生类: public class Student
-
Python面向对象编程中的类和对象学习教程
Python中一切都是对象.类提供了创建新类型对象的机制.这篇教程中,我们不谈类和面向对象的基本知识,而专注在更好地理解Python面向对象编程上.假设我们使用新风格的python类,它们继承自object父类. 定义类 class 语句可以定义一系列的属性.变量.方法,他们被该类的实例对象所共享.下面给出一个简单类定义: class Account(object): num_accounts = 0 def __init__(self, name, balance): self.name =
-
javaScript中定义类或对象的五种方式总结
第一种方式: 工厂方法 能创建并返回特定类型的对象的工厂函数(factory function). function createCar(sColor){ var oTempCar = new Object; oTempCar.color = sColor; oTempCar.showColor = function (){ alert(this.color); }; return oTempCar; } var oCar1 = createCar(); var oCar2 = createCa
随机推荐
- javascript实现随机读取数组的方法
- iOS实现scrollview上拉显示Navbar下拉隐藏功能详解
- 在iOS应用中使用UIWebView创建简单的网页浏览器界面
- js判断浏览器类型,版本的代码(附多个实例代码)
- wordpress安装过程中遇到中文乱码的处理方法
- 使用PHP实现Mysql读写分离
- 在Python3中使用asyncio库进行快速数据抓取的教程
- c#开发的程序安装时动态指定windows服务名称
- 详解Linux进程间通信——使用信号量
- 给WordPress中的留言加上楼层号的PHP代码实例
- 深入SQL Server中定长char(n)与变长varchar(n)的区别详解
- 深入分析SQL Server 存储过程
- jQuery Validate 相关参数及常用的自定义验证规则
- javascript采用数组实现tab菜单切换效果
- 防止SpringMVC拦截器拦截js等静态资源文件的解决方法
- Android 的回调事件详解
- android使用PullToRefresh框架实现ListView下拉刷新上拉加载更多
- Nginx的超时timeout配置详解
- Node.js创建HTTP文件服务器的使用示例
- Windows7下安装使用MySQL8.0.16修改密码、连接Navicat问题