抽象类

不能被实例化,用于其他类的继承。使用abstract(抽象)。抽象方法一定是抽象类,抽象类不一定有抽象方法。

接口interface是特殊的抽象类。

eg:

<?php
//抽象类
abstract class person{
function run(){
echo "runing………………";
}
abstract function start();
} class boys extends person{
function start(){
echo "子类的方法start";
}
} $a=new boys();
$a->run(); //接口的编写 interface student{
function name();
function study();
} class stu implements student{
function name(){
echo "姓名";
}
function study(){
echo "学习";
}
} $b=new stu();
$b->study();
==================================================================

魔术方法克隆__clone()。

<?php
//对象克隆和魔术方法__clone
class person{
var $name;
var $age;
var $count=0;
function __construct($name,$age){
$this->name=$name;
$this->age=$age;
}
function __clone(){
$this->count+=1;
}
function run(){
echo $this->name."runing………………";
}
}
$a=new person("小明",23);
$a->run();
echo $a->count;
$b=clone $a; //克隆对象
$b->run();
echo $b->count;
$c=new person("小花",22);
echo $c->count;
$d=clone $b;
echo $d->count;

魔术方法__get() __set()

<?php
class person{
private $name;
private $age;
function __set($name,$value){
$this->$name=$value; }
function __get($name){
return $this->$name;
} } $a=new person();
$a->name="小明";
echo $a->name;

魔术方法__call()、__tostring()

<?php
//__call()、__toString()
class person{
function __call($name,$v){
echo "您调用的方法".$name."不存在";
}
function __toString(){
return "我是person类的信息";
}
}
$a=new person();
$a->run();
$a->stop();
echo $a;

其他的魔术方法:

__construct(),类的构造函数
__destruct(),类的析构函数
__call(),在对象中调用一个不可访问方法时调用
__callStatic(),用静态方式中调用一个不可访问方法时调用
__get(),获得一个类的成员变量时调用
__set(),设置一个类的成员变量时调用
__isset(),当对不可访问属性调用isset()或empty()时调用
__unset(),当对不可访问属性调用unset()时被调用。
__sleep(),执行serialize()时,先会调用这个函数
__wakeup(),执行unserialize()时,先会调用这个函数
__toString(),类被当成字符串时的回应方法
__invoke(),调用函数的方式调用一个对象时的回应方法
__set_state(),调用var_export()导出类时,此静态方法会被调用。
__clone(),当对象复制完成时调用
__autoload(),尝试加载未定义的类
__debugInfo(),打印所需调试信息

最新文章

  1. Shell脚本检测Tomcat是否正在运行
  2. c#如何采集需要登录的页面
  3. a byte of python(摘02)
  4. 【LeetCode】111 - Minimum Depth of Binary Tree
  5. WPF学习之资源-Resources
  6. 关于wireshark的两个抓包过滤显示的基本语法
  7. Office——检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败
  8. IntelliJ IDEA 开发scala
  9. 运行Chromium浏览器缺少google api密钥无法登录谷歌账号的解决办法
  10. Go语言单元测试与基准测试
  11. [PHP] 简单多进程并发
  12. web.xml文件介绍
  13. 我的第一个python web开发框架(27)——定制ORM(三)
  14. web页面font-family显示
  15. django之ORM数据库操作
  16. LG2634 [国家集训队]聪聪可可
  17. T4学习- 4、Kalman Studio-T4代码生成器
  18. CentOS VmwareTools安装
  19. linux信号量初识
  20. bzoj千题计划151:bzoj1131: [POI2008]Sta

热门文章

  1. .Net手动实现ORM及代码生自动成器
  2. IO 输入输出流
  3. CSS札记(一):CSS选择器
  4. Mac sublime安装package controller
  5. Codeforces 95C Volleyball(最短路)
  6. yield(放弃、谦逊、礼让) - 瞬时的,暂时放了马上再抢
  7. 三十七、python中的logging介绍
  8. MyBatis系列:二、配置文件详解
  9. Delphi XE2 之 FireMonkey 入门(25) - 数据绑定: TBindingsList: 表达式的灵活性及表达式函数
  10. spring boot添加logging不能启动且不报错