第十八节:类与对象-构造函数和析构函数-访问控制-对象继承
构造函数和析构函数
此处要注意一个知识点,就是子类和父类他们的__construct和__destruct之间的关系,子类不会执行父类的__construct和__destruct除非在子类的
__construct和__destruct中,通过parent::__construct()或parent::__destruct()调用
1 <?php 2 class Baseclass{ 3 function __construct(){ 4 print "In BaseClass construct\n"; 5 } 6 } 7 class Subclass extends Baseclass{ 8 function __construct(){ 9 parent::__construct(); 10 print "In SubClass construct\n"; 11 } 12 } 13 $obj=new Baseclass();//输出 In BaseClass construct 14 $obj=new Subclass();//输出 In BaseClass construct In SubClass construct 15 ?>
在__destruct中 即使程序中有exit 析构函数仍然会被执行
1 <?php 2 class MyDestructableClass{ 3 function __construct(){ 4 print "In constructor\n"; 5 $this->name="MyDestructableClass"; 6 exit;//即使有exit __destruct依然执行。 7 } 8 function __destruct(){ 9 print "Destroing".$this->name."\n"; 10 } 11 } 12 $obj=new MyDestructableClass(); //输出In constructor DestroingMyDestructableClass 13 ?>
访问控制
对属性或方法的访问控制,是通过在前面添加关键字 public、protected 或 private 来实现的。由 public 所定义的类成员可以在任何地方被访问;由 protected 所定义的类成员则可以被其所在类的子类和父类访问(当然,该成员所在的类也可以访问);而由 private 定义的类成员则只能被其所在类访问。
类中的方法都必须使用关键字public、protected 或 private 进行定义。如果没有设置这些关键字,则该方法会被设置成默认的 public。
对象的继承
继承已为大家所熟知的一个程序设计特性,PHP 的对象模型也使用了继承。继承将会影响到类与类,对象与对象之间的关系。
比如,当扩展一个类,子类就会继承父类的所有公有和保护方法。但是子类的方法会覆盖父类的方法。
继承对于功能的设计和抽象是非常有用的,而且对于类似的对象增加新功能就无须重新再写这些公用的功能。
注意当子类的方法覆盖父类的方法时通过parent::fun();调用。
1 <?php 2 class FaClass{ 3 function foo(){ 4 var_dump(Faclass); 5 } 6 } 7 class SonClass extends FaClass{ 8 function __construct(){ 9 $this->foo(); 10 } 11 function foo(){ 12 parent::foo(); 13 var_dump(SonClass); 14 } 15 } 16 $obj=new SonClass(); //string(7) "Faclass" string(8) "SonClass" 17 ?>
转载于:https://www.cnblogs.com/saw2012/archive/2013/02/03/2890679.html
第十八节:类与对象-构造函数和析构函数-访问控制-对象继承相关推荐
- Python 学习笔记 系统模块 面对对象思想 类和对象 类中的方法与对象 构造函数和析构函数
一.系统模块: UTC:国际标准时间, 格林尼治天文时间,UTC+8 时间戳:指定时间距离1970.1.1 00:00:00的秒数 time:时间 datetime:日期 calendar:万年历 o ...
- 实验3.1 定义一个CPU类,观察构造函数和析构函数的调用顺序
题目 定义一个CPU类,包含等级(rank).频率(frequency).电压(voltage)等属性,有两个公有成员函数run.stop.其中,rank为枚举类型CPU_Rank,定义为enum C ...
- php类中的构造函数与析构函数
1.php类中的构造函数 a.构造函数的定义及创建 构造函数的英文是constructor,通常是和析构函数配合使用的. 所谓构造函数,就是在我们这个类运行之初需要初始的东东,执行类中所有方法之前,无 ...
- 类String的构造函数、析构函数和赋值函数
一.类String的原型为: 1 class String 2 { 3 public: 4 String(const char *str = NULL); //普通构造函数 5 6 ~String(v ...
- 构造函数,析构函数,对象连的简单应用
2019独角兽企业重金招聘Python工程师标准>>> <?php class Person{ public $name; public $age; f ...
- C++将类的构造函数、析构函数声明为private或者protected的用途
如果将构造函数.析构函数声明为private或者protected,表示不能从类的外部正常调用构造和析构函数了. 这种用法的通常使用的场景如下: 1.如果不想让外面的用户直接构造一个类A的对象,而希望 ...
- 类的构造函数和析构函数、默认构造函数
前言 程序只能通过成员函数来访问数据成员,因此需要设计合适成员函数,才能成功地将对象初始化. 类构造函数专门用于构造新对象,将值赋给他们的数据成员,进行初始化. 构造函数名称与类名相同,没有返回值,没 ...
- C++类的构造函数、析构函数与赋值函数
C++类的构造函数.析构函数与赋值函数 构造函数.析构函数与赋值函数是每个类最基本的函数.它们太普通以致让人容易麻痹大意,其实这些貌似简单的函数就象没有顶盖的下水道那样危险. 每个类只有一个析构函数和 ...
- String 的普通构造函数、拷贝构造函数、析构函数、赋值函数
转自:http://blog.csdn.net/xiaoxiangzhu660810/article/details/8149398 题目:编写类String的构造函数.析构函数和赋值函数,已知类St ...
- C++语法:构造函数以及析构函数
目录 定义 主要特点 C++的构造函数定义格式 示例1:不带参数的构造函数 示例2:带参数的构造函数 示例3:使用初始化列表来初始化字段 类的析构函数 定义 构造函数 ,是一种特殊的方法.主要用来在创 ...
最新文章
- linux安装Python2.7
- RobotFramework读取mysql和oracle数据库
- keras优化算法_自然场景文本识别(OCR),keras-yolo3-densenet-ocr
- 如何取消 登录_LSAT | 退考、缺考、取消成绩,各自的区别和流程是怎样的?
- 获取 当前日期、当前时间、前一天日期
- Kafka.net使用编程入门(一)
- 爱情六十三课,定个开放日
- java如何将表添加到文本区_java – 在itext中向表中的单元格添加更多文本
- VB2010(1)_Hello User
- 蛋白定量质谱(Label-free)
- 深度学习在摄影技术中的应用与发展
- mysql实验三报告总结_数据库安全性实验报告的总结(共9篇).docx
- 充电慢、掉电快、续航短?这份电动车过冬指南请查收!
- GEE:批量下载数据,按月合成,不同景,全实验区域,一键执行
- 代码随想录Day48|198.打家劫舍、213.打家劫舍II、337.打家劫舍III
- HDFS(下):NameNode和SecondaryNameNode、HDFS工作机制、故障处理、集群安全模式、服役退役节点、集群黑白名单、DataNode多目录详解、HDFS2.x新特性
- 基于51单片机—多功能秒表
- PHP 发送手机短信验证
- 刷题汇总(三)leetcode 精选50题 C++答案总结
- c语言handler指针,详解C++ new-handler机制
热门文章
- 论文笔记 | 使用GCN建模关系数据
- leaflet地图区域数据可视化
- KMP模板以及入门题型总结
- 用java判断x奇或偶_改善java程序——用偶判断,不用奇判断
- 2021-06-06滚动条de面板
- django settings 定义的变量不存在_【Django】第一期|初识Django以及基本安装方法和配置...
- at shutdown 不起作用_at胎是什么胎
- C++ 字符串 多个<< << <<
- 【Django 2021年最新版教程25】模板语言 前端for循环怎么用 实例
- 区块链 FISCO BCOS网络端口讲解