构造函数和析构函数

此处要注意一个知识点,就是子类和父类他们的__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

第十八节:类与对象-构造函数和析构函数-访问控制-对象继承相关推荐

  1. Python 学习笔记 系统模块 面对对象思想 类和对象 类中的方法与对象 构造函数和析构函数

    一.系统模块: UTC:国际标准时间, 格林尼治天文时间,UTC+8 时间戳:指定时间距离1970.1.1 00:00:00的秒数 time:时间 datetime:日期 calendar:万年历 o ...

  2. 实验3.1 定义一个CPU类,观察构造函数和析构函数的调用顺序

    题目 定义一个CPU类,包含等级(rank).频率(frequency).电压(voltage)等属性,有两个公有成员函数run.stop.其中,rank为枚举类型CPU_Rank,定义为enum C ...

  3. php类中的构造函数与析构函数

    1.php类中的构造函数 a.构造函数的定义及创建 构造函数的英文是constructor,通常是和析构函数配合使用的. 所谓构造函数,就是在我们这个类运行之初需要初始的东东,执行类中所有方法之前,无 ...

  4. 类String的构造函数、析构函数和赋值函数

    一.类String的原型为: 1 class String 2 { 3 public: 4 String(const char *str = NULL); //普通构造函数 5 6 ~String(v ...

  5. 构造函数,析构函数,对象连的简单应用

    2019独角兽企业重金招聘Python工程师标准>>> <?php class Person{     public $name;     public $age;     f ...

  6. C++将类的构造函数、析构函数声明为private或者protected的用途

    如果将构造函数.析构函数声明为private或者protected,表示不能从类的外部正常调用构造和析构函数了. 这种用法的通常使用的场景如下: 1.如果不想让外面的用户直接构造一个类A的对象,而希望 ...

  7. 类的构造函数和析构函数、默认构造函数

    前言 程序只能通过成员函数来访问数据成员,因此需要设计合适成员函数,才能成功地将对象初始化. 类构造函数专门用于构造新对象,将值赋给他们的数据成员,进行初始化. 构造函数名称与类名相同,没有返回值,没 ...

  8. C++类的构造函数、析构函数与赋值函数

    C++类的构造函数.析构函数与赋值函数 构造函数.析构函数与赋值函数是每个类最基本的函数.它们太普通以致让人容易麻痹大意,其实这些貌似简单的函数就象没有顶盖的下水道那样危险. 每个类只有一个析构函数和 ...

  9. String 的普通构造函数、拷贝构造函数、析构函数、赋值函数

    转自:http://blog.csdn.net/xiaoxiangzhu660810/article/details/8149398 题目:编写类String的构造函数.析构函数和赋值函数,已知类St ...

  10. C++语法:构造函数以及析构函数

    目录 定义 主要特点 C++的构造函数定义格式 示例1:不带参数的构造函数 示例2:带参数的构造函数 示例3:使用初始化列表来初始化字段 类的析构函数 定义 构造函数 ,是一种特殊的方法.主要用来在创 ...

最新文章

  1. linux安装Python2.7
  2. RobotFramework读取mysql和oracle数据库
  3. keras优化算法_自然场景文本识别(OCR),keras-yolo3-densenet-ocr
  4. 如何取消 登录_LSAT | 退考、缺考、取消成绩,各自的区别和流程是怎样的?
  5. 获取 当前日期、当前时间、前一天日期
  6. Kafka.net使用编程入门(一)
  7. 爱情六十三课,定个开放日
  8. java如何将表添加到文本区_java – 在itext中向表中的单元格添加更多文本
  9. VB2010(1)_Hello User
  10. 蛋白定量质谱(Label-free)
  11. 深度学习在摄影技术中的应用与发展
  12. mysql实验三报告总结_数据库安全性实验报告的总结(共9篇).docx
  13. 充电慢、掉电快、续航短?这份电动车过冬指南请查收!
  14. GEE:批量下载数据,按月合成,不同景,全实验区域,一键执行
  15. 代码随想录Day48|198.打家劫舍、213.打家劫舍II、337.打家劫舍III
  16. HDFS(下):NameNode和SecondaryNameNode、HDFS工作机制、故障处理、集群安全模式、服役退役节点、集群黑白名单、DataNode多目录详解、HDFS2.x新特性
  17. 基于51单片机—多功能秒表
  18. PHP 发送手机短信验证
  19. 刷题汇总(三)leetcode 精选50题 C++答案总结
  20. c语言handler指针,详解C++ new-handler机制

热门文章

  1. 论文笔记 | 使用GCN建模关系数据
  2. leaflet地图区域数据可视化
  3. KMP模板以及入门题型总结
  4. 用java判断x奇或偶_改善java程序——用偶判断,不用奇判断
  5. 2021-06-06滚动条de面板
  6. django settings 定义的变量不存在_【Django】第一期|初识Django以及基本安装方法和配置...
  7. at shutdown 不起作用_at胎是什么胎
  8. C++ 字符串 多个<< << <<
  9. 【Django 2021年最新版教程25】模板语言 前端for循环怎么用 实例
  10. 区块链 FISCO BCOS网络端口讲解