PHP中类成员的访问控制
类成员访问控制:
1、public 默认的,任何地方都可以访问,类内,类外,子类中
2、protected 受保护的,对外是封闭的,但是类内部和子类可以访问
3、private 私有的,仅限于本类中访问
静态属性和静态方法
static关键字声明了一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也成为'类属性'或类方法。
静态方法的特点
static方法是累涨的一个成员方法,属于整个类,即是不创建任何对象也可以直接使用。静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。
静态属性的特点
1.static的属性,在内存中只有一份,为所有的实例共用。
2.使用self:: 关键字访问当前类的静态成员。
3.一个类的所有实例,共用类中的静态属性。
4.在内存中即使有多个实例,静态的属性也只有一份。
使用静态方法
1.在类外调用静态方法时: 使用 类名::静态方法名
2.在类中调用其他静态方法时 :使用self::静态方法名,不能使用this(this(this指的是实例化类后的具体对象)
其他
静态属性不需要实例化就可以直接使用,在对象还没有创建时就可以直接使用。
在静态方法中不能使用this−>调用
当一个类中有非静态方法被self:: 调用时,系统会自动将这个方法转换为静态方法。
类外部调用静态属性和静态方法
<?php namespace _1010;
//静态属性和静态方法,外部调用
class Person
{
public $name = 'tom';//这是非静态属性
public static $age = 22;//静态属性 public static function intro()//这是静态方法
{
echo '现在调用的是静态方法';
}
}
echo Person::$age,'<br>';//类外部调用静态属性
echo Person::intro();//类外部调用静态方法
类内部调用静态属性
<?php
//内部调用静态属性
class Person
{
public $name = 'tom';
public static $age = 24; public function intro()
{
echo 'my age is '.self::$age;
}
//设置静态属性
public function setAge($age)
{
self::$age = $age;
}
//获取静态属性
public function getAge()
{
echo '我现在的 age 是'.self::$age;
}
}
//实例化对象
$p = new Person();
$p->intro();
$p->setAge(66);
$p->getAge();
类内部调用静态方法
PHP中类成员的访问控制的更多相关文章
- C++中类成员的访问控制
结论 首先给出结论,请看下图,看图说话最容易理解了. 类眼中的自己 类中定义的所有成员,不论是以public, protected还是private修饰,对类自身而言,它们都是可见的. 对象眼中的类 ...
- Delphi XE中类成员的访问权限(新增了strict private和strict protected,还有automated)
Delphi XE中类成员的访问权限共提供了6个关键词来用于限定访问权限:public.private.protected.published.automated strict private . s ...
- 鸡啄米:C++编程之十三学习之类与对象,类的声明,成员的访问控制
1. 本次学习鸡啄米课程第13篇,把比较重要的学习记录下来,以敦促自己更好的学习.推荐他们的网址学习:http://www.jizhuomi.com/school/c/97.html 2. 在面向过程 ...
- this、static、main方法、静态代码块、final关键字、Runtime类、Cloneable类、类成员的访问控制权限、异常体系
this表示当前对象,用在方法内部,当某对象调用该方法时,该方法中的this就代表调用该方法的对象: static关键字: 修饰类属性后,该属性就成为该类所有实例的公共属性,修改该属性值,所有的实例的 ...
- Java中类成员变量初始化顺序
一. 定义处默认初始化vs构造函数中初始化 java中类成员变量支持在声明处初始化,也可以在构造函数中初始化,那么这两者有什么区别呢?看下面例子 public class FieldsInit { p ...
- C++中类成员变量在初始化列表中的初始化顺序
引子:我们知道,C++中类成员变量的初始化顺序与其在类中的声明顺序是有关的. 先看代码: class TestClass1 { public: TestClass1() { cout << ...
- C++中类成员使用前需要初始化的重要性
今天写程序的时候,创建了一个结构体: struct BufferObj { char* buf; int bufLen; SOCKADDR_STORAGE addr; int addrLen; str ...
- C++中类成员函数作为回调函数
注:与tr1::function对象结合使用,能获得更好的效果,详情见http://blog.csdn.net/this_capslock/article/details/38564719 回调函数是 ...
- C#中类成员的执行顺序
先进行细分: 类的成员分为:字段.属性.方法.构造方法 成员的修饰符:静态成员.实例成员 层次结构:父类.子类 先不考虑继承关系,执行顺序为: 静态字段静态构造方法实例字段实例构造方法属性和方法是在调 ...
随机推荐
- 如何用Python删除一个文件?
删除文件 path,删除时候如果path是一个目录, 抛出 OSError错误. remove() 同 unlink() 的功能是一样的 os.remove('a.txt') 如果remove文件夹就 ...
- JavaScript--自定义事件Event
在开发过程中,js原生事件不足以满意开发需求,需要开发者自定义事件. 一.Event Event()构造函数创建一个新的Event. event = new Event(typeArg,eventIn ...
- docker.socks vul
在容器上获取 RCE 1)列出所有容器 第一步是获取主机上所有容器的列表.为此,你需要执行以下http请求: GET /containers/json HTTP/1.1 Host: <docke ...
- SpringBoot2.X中的静态资源访问失效
今天开始使用SpringBoot写项目,于是先让其能够访问静态资源,但是配置半天也不能访问我的helloWorld页面,原来,在SpringBoot2.x中,一下静态资源路径不生效了. classpa ...
- 关于form与表单提交操作的一切
原文链接:http://caibaojian.com/form.html 你知道,一个表单里面只要有form元素,如果没有给action加一个默认值,为空白的时候,当你刷新页面时,会弹出一个警告框提示 ...
- MindManager2018试用期过后 修改过期时间 破解使用
MindManager2018试用期过后 修改过期时间 破解使用 2019年06月13日 15:58:11 一生中所爱 阅读数 1991更多 分类专栏: 工具软件使用 1.找到路径:C:\User ...
- 手把手教你MyEclipseUML建模(下)
手把手教你MyEclipseUML建模(下) 点击访问:手把手教你MyEclipseUML建模(上) 1.用UML 2建模 MyEclipse提供了以下UML 2特性: UML 2图:类.组件.部署. ...
- osg fbx模型删除模型中的某几个节点,实现编辑模型的功能
fbx model element count:80 三维视图: {三维} 4294967295 osg::MatrixTransform1 基本墙 wall_240 [361750] 4294967 ...
- flutter的生命周期
大致可以看成三个阶段 初始化(插入渲染树) 状态改变(在渲染树中存在) 销毁(从渲染树种移除) initState 当插入渲染树的时候调用,这个函数在生命周期中只调用一次.这里可以做一些初始化工作,比 ...
- 一个link加载多个css文件
细看正则时匹配慕课网链接时发现的,一个link加载多个css文件 http://static.mukewang.com/static/css/??base.css,common/common-less ...