- 浏览: 2013214 次
- 来自: 武汉
文章分类
- 全部博客 (415)
- UI设计 (19)
- PHP (26)
- PHP工具类 (23)
- 二次开发 (53)
- phpMVC (28)
- javascript (50)
- JS 组件 (20)
- MYSQL (37)
- 其他 (16)
- xml/flash/flex (6)
- 版本控制 (7)
- 开源 (4)
- bug解决 (5)
- Linux (15)
- NoSQL (14)
- 软件设计 (21)
- C/PHP内核 (5)
- 安全性 (8)
- 面试 (18)
- 设计模式 (4)
- 重构 (6)
- 开发配置 (11)
- SQL SERVER (12)
- 采集 (3)
- SEO (2)
- 维护 (15)
- UML (5)
- 硬件标准 (1)
- 架构 (8)
- JAVA (1)
最新评论
-
carry0987:
求大神分離下X3的模板...不然對於PHP7不友好啊...
分离自Discuz模板类和语法 -
青木得海角:
你好,里面的 Crypt/TripleDES.php 和 Cr ...
POS机算法 -
zohog:
楼主,Mac.php中里面的 Crypt/TripleDES. ...
POS机算法 -
zohog:
楼主,Mac.php中里面的 Crypt/TripleDES. ...
POS机算法 -
q59200182:
能不能给个完整的demo 新手上路不会 求带
AngularJs 指令directive之controller,link,compile
一,public,private,protected的区别
public:权限是最大的,可以内部调用,实例调用等。
protected: 受保护类型,用于本类和继承类调用。
private: 私有类型,只有在本类中使用。
二,实例
<?php error_reporting(E_ALL); class test{ public $public; private $private; protected $protected; static $instance; public function __construct(){ $this->public = 'public <br>'; $this->private = 'private <br>'; $this->protected = 'protected <br>'; } static function tank(){ if (!isset(self::$instance[get_class()])) { $c = get_class(); self::$instance = new $c; } return self::$instance; } public function pub_function() { echo "you request public function<br>"; echo $this->public; echo $this->private; //private,内部可以调用 echo $this->protected; //protected,内部可以调用 $this->pri_function(); //private方法,内部可以调用 $this->pro_function(); //protected方法,内部可以调用 } protected function pro_function(){ echo "you request protected function<br>"; } private function pri_function(){ echo "you request private function<br>"; } } $test = test::tank(); echo $test->public; echo $test->private; //Fatal error: Cannot access private property test::$private echo $test->protected; //Fatal error: Cannot access protected property test::$protected $test->pub_function(); $test->pro_function(); //Fatal error: Call to protected method test::pro_function() from context $test->pri_function(); //Fatal error: Call to private method test::pri_function() from context ?>
从上面的例子中,我们可以看出,
public: 可以class内部调用,可以实例化调用。
private: 可以class内部调用,实例化调用报错。
protected: 可以class内部调用,实例化调用报错。
<?php class test{ public $public; private $private; protected $protected; static $instance; public function __construct(){ $this->public = 'public <br>'; $this->private = 'private <br>'; $this->protected = 'protected <br>'; } protected function tank(){ //私有方法不能继承,换成public,protected if (!isset(self::$instance[get_class()])) { $c = get_class(); self::$instance = new $c; } return self::$instance; } public function pub_function() { echo "you request public function<br>"; echo $this->public; } protected function pro_function(){ echo "you request protected function<br>"; echo $this->protected; } private function pri_function(){ echo "you request private function<br>"; echo $this->private; } } class test1 extends test{ public function __construct(){ parent::tank(); parent::__construct(); } public function tank(){ echo $this->public; echo $this->private; //Notice: Undefined property: test1::$private echo $this->protected; $this->pub_function(); $this->pro_function(); $this->pri_function(); //Fatal error: Call to private method test::pri_function() from context 'test1' } public function pro_extends_function(){ echo "you request extends_protected function<br>"; } public function pri_extends_function(){ echo "you request extends_private function<br>"; } } error_reporting(E_ALL); $test = new test1(); $test -> tank(); //子类和父类有相同名字的属性和方法,实例化子类时,子类的中的属性和方法会盖掉父类的。 ?>
从上面的例子中,我们可以看出,
public: test中的public可以被继承。
private: test中的private不可以被继承。
protected: test中的protected可以被继承。
static: test中的static可以被继承。
唉,对于这些东西,老是不喜欢记着,用的时候,总感觉不对,又要去查,所以写个例子,方便自己查看。
发表评论
-
Discuz 插件开发
2014-11-12 15:00 1892首先开启开发者模式,在config\config_glob ... -
php session存数据库
2013-11-27 21:43 1543php.ini改称 session.save_handle ... -
PHP在WIN下操作socket
2013-08-29 17:05 1430TCP/UDP Socket调试工具 PHP在WI ... -
防止恶意注册和暴力破解
2012-07-10 21:43 41871验证码2token令牌。(同理随机input的name ... -
MyISAM InnoDB 区别
2012-02-14 11:50 1453主要区别: 1).MyISAM ... -
MySQL索引
2012-01-13 09:58 13881、索引是什么 索引 ... -
session共享之memcache Redis
2011-11-02 15:11 75472.Redis的特点 Redis本质上是一个Key ... -
mysql分表,分区的区别和联系
2011-09-29 12:09 1669一,什么是mysql分表, ... -
图片处理神器ImageMagick以及PHP的imagick扩展
2011-09-26 18:16 2000ImageMagick是一套功能强大、稳定而且开源的工具集 ... -
PHP获取MAC地址
2011-09-26 17:57 1429获取网卡的MAC地址原码;目前支持WIN/LINUX系统 获取 ... -
PHP检测远端文件是否存在
2011-06-20 14:45 2095<?php $url = 'http://exampl ... -
php 扩展检查并加载
2011-06-16 15:41 1916<?php /** *列出所有加载的扩展及其包含的 ... -
php 魔术方法 魔术常量
2011-06-16 15:13 1461魔术常量(Magic constant ... -
php实现计划任务与持续进程实例 fsockopen
2011-06-09 09:39 2686Web服务器执行一个PHP脚本,有时耗时很长才能返回执行结果, ... -
php如何转换html标签
2011-06-09 09:37 3125php如何转换html标签,使其能在浏览器中正常显示?在编 ... -
php自动运行 win32service功能
2011-06-01 18:07 5075什么 windows服务 ? http ... -
PHP 之session cookie
2011-06-01 11:07 1964cookie和session有什么用 ... -
PHP5常用函数
2011-05-18 10:13 1740PHP已经更新到很多个版本,最近用的比较多的要数PHP5。 ... -
php跨平台总结 常用预定义常量
2011-05-17 17:38 1897<?php echo PHP_EOL; ... -
abstract class和interface有什么区别
2011-05-06 21:10 1526抽象类和接口的异同1. 相同点:(1)两者都是抽象类,都不能实 ...
相关推荐
一,public,private,protected的区别public:权限是最大的,可以内部调用,实例调用等。protected: 受保护类型,用于本类和继承类调用。private: 私有类型,只有在本类中使用。二,实例复制代码 代码如下:<?...
Ruby中,却不行:你只能在你本对象的实例中访问本对象的private方法。 因为Ruby的原则是“private意为你不能指定方法接收者”,接收者只能是self,且self必须省略! 所以Ruby中子类可以访问父类的privat
代码如下: class AccessTest def test return “test private” end def test_other(other) “other object ”+ other.test end end t1 = AccessTest.new t2 = AccessTest.new p t1.test # => test private p t1....
本文实例讲述了PHP实现在对象之外访问其私有属性private及保护属性protected的方法。分享给大家供大家参考,具体如下: public 表示全局的访问权限,类内部外部子类都可以访问; private表示私有的访问权限,只有本...
我容易混淆public,private,protected,还容易混淆this,self这些东西。前面已经写了一篇关于public,private,protected 博文了,下面来说一下this,self,parent的用法
// bar类常量属于类自身,不属于对象实例,不能通过对象实例访问不能用public,protected,private,static修饰子类可以重写父类中的常量,可以通过(parent::)来调用父类中的常量 自PHP5.3.0起,可以用一个变量...
public class CanvasDemo extends MIDlet implements CommandListener { private Command exitCommand = new Command("退出", Command.EXIT, 1); //退出命令 private Command backCommand = new Command("返回", ...
* 面向对象 -----类与对象 课程内容 定义类 创建对象 封装 $this的使用 一、定义类 在PHP中把具有相同属性和行为的对象看成同一类,把属于某个类的实例称为某个类的对象。例如学生张三与李四是两个不同的对象,两者...
* 不能用public,protected,private,static修饰 * 子类可以重写父类中的常量,可以通过(parent::)来调用父类中的常量 * 自PHP5.3.0起,可以用一个变量来动态调用类。但该变量的值不能为关键字(如self,parent...
今天查看yii源码,发现yii\base\Model中的attribute()方法是通过反射获取对象的public non-static属性。记得以前看到的代码都是用get_object_vars()这个函数获取的,昨天查看php文档,发现还可以用foreach遍历对象...
实例如下: #include <iostream> using namespace std; class a{ friend class pal; private: int i; protected: int j; public: int k; }; class b:public a{ protected: int l; }; class c:protected a{}; ...
其它对象对它的访问,访问权限所以有以下几种:private, protected, public, friendly。 1.8.2 对象 把类实例化,我们可以生成多个对象,这些对象通过消息传递来进行交互(消息 传递即激活指定的某个对象的方法以改变...
//php中的魔术方法 header('content-type:text/html;charset=utf-8'); class Person{ public $name; protected $sex; private $salary; //构造方法,实例化对象是自动触发的方法 public function __construct($...
通过C++语言中的继承机制,一个新类既可以共享另一个类的操作和数据,也可以在新类中定义已有类中没有的成员。 class CBase { public: void FuncA(void); void FuncB(void); }; //派生类 class CDerive :...
众所周知,在Delphi中,类的private和protected域中的变量可以被同一单元中可以自由的被访问(Delphi的类没有“友元”的概念,但同一个unit中可以说自动友元化了),而并非是真正的私有或只能被继承类访问。...
C) 内部类的访问权限可以被定义为public、protected、private和default。普通类也可以定义上面四种访问权限,但是通常我们只应用public和default两种访问权限。 题目16:c 程序如下: abstract class MineBase { ...
本文实例讲述了C++单例模式及其相关应用方法,分享给大家供大家参考。具体方法分析如下: 定义: 一个类有且仅有一个实例,并且提供一个访问它的全局访问点。 要点: 1、类只能有一个实例; 2、必须自行创建此实例;...