面向对象的静态、抽象和加载
静态:
关键字为:static
静态成员与普通成员的区别:普通成员是属于对象的,为静态成员是属于类的。
class FenBi{public static $color; //静态成员public $length; //普通成员public static function test(){echo "长度为:{$this->length}";}public function ceshi(){echo "颜色为".FenBi::$color;} } FenBi::$color = "红色"; //赋值使用类名 $f = new FenBi(); $f->ceshi();
静态的方法里面不能包含普通成员(没有对象,没办法调用普通成员);
普通的方法里面可以包含静态成员。
抽象:
抽象类:更加抽象的一个类,无法直接实例化对象,主要做为父类存在;
抽象方法:抽象的一个方法,不能直接调用;
抽象关键字:abstract。
abstract class Ren{public abstract function test(); } class China extends Ren{public function test(){echo "aa";} } $c = new China();
接口:极度抽象的类,里面只能包含抽象方法,不能包含普通方法和成员变量。
//定义实现哪些功能 interface USB{public function read();public function write(); } //具体实现方法 class ShuBiao implements USB{public function read(){echo "鼠标插入了";}public function write(){echo "给鼠标供电了";} }$s = new ShuBiao(); $s->read();$s->write();
接口一般还表示API:网络数据接口。
加载:
如果在类里面只造了一个对象,然后直接输出会报错,入过想输出查看类里面的内容需要使用到加载。
关键词:__tostring,同样为一个魔术方法,在输出对象时自动调用。
class Ren{public function __tostring(){return "这是一个人类";} $r = new Ren(); echo $r; //输出这是一个人类
克隆:
能够从一个对象里面克隆出一个一模一样的对象出来。
关键词:__clone
class Ren{public $name;public function __clone(){//$this->name = "李四"; //输入这句可以改变输出的内容 } } $r = new Ren(); //克隆对象 $r = new Ren(); $r->name = "张三"; $r1 = clone $r; var_dump($r1); //输出张三
加载类:
1.
include("类所在的地址");
这种执行两次会因为重复报错,写成:
include_once("类所在的地址");
这样就可以正常显示,表示请求一次,可防止因发生重复而报错。
2.
require("类所在的地址");
同样两次重复会报错
require_once("类所在的地址")
这样就可以防止报错。
这两种的区别:如果类里面出现错误,include不会影响程序执行,require会导致后面的不能执行。
3.自动加载类:
条件:
1.类的命名要规范;
2.所有的类要放在同一个文件夹下。
类的文件命名规范:类名(同样首字母大写).class.php。
关键词:__autoload
function __autoload($classname){require_once "地址"; }
然后在同一个目录下新建几个类,即可调用。
转载于:https://www.cnblogs.com/maoqiaoyu123/p/8250799.html
面向对象的静态、抽象和加载相关推荐
- 前端静态资源请求和加载优化总结
如果有这样一个项目,js脚本数量100+,其中50个是各种框架或库,css数量20+,图片若干 .那么,不用说,这个页面加载起来,一定快不了. 静态资源的请求和加载速度,直接影响页面呈现,应该怎么优化 ...
- java 类 加载 初始化_java中类的初始化和加载
最近在阅读孙卫琴的java面向对象一书中,看到对java中类的初始化和加载中的论述比较系统,故笔记之 1)类的初始化,JAVA在初始化一个类时,以下步骤 A 假如类存在直接的父类,并且这个父类还没有初 ...
- Tensorflow |(3)变量的的创建、初始化、保存和加载
Tensorflow |(1)初识Tensorflow Tensorflow |(2)张量的阶和数据类型及张量操作 Tensorflow |(3)变量的的创建.初始化.保存和加载 变量的的创建.初始化 ...
- Android O: View的绘制流程(一): 创建和加载
从这篇博客开始,我们会用几篇文章, 基于Android O的代码,分析一下View的绘制流程. 在分析具体的绘制流程前,我们先来了解一下XML中定义的View, 如何被创建和加载. 一.setCo ...
- Java反射-静态/动态加载类
title: Java反射-静态/动态加载类 date: 2019-05-28 18:50:00Java反射-静态/动态加载类 Class 类是对象,是java.lang.Class类的实例对象.任何 ...
- PyTorch学习笔记2:nn.Module、优化器、模型的保存和加载、TensorBoard
文章目录 一.nn.Module 1.1 nn.Module的调用 1.2 线性回归的实现 二.损失函数 三.优化器 3.1.1 SGD优化器 3.1.2 Adagrad优化器 3.2 分层学习率 3 ...
- 前端性能和加载体验优化实践(附:PWA、离线包、内存优化、预渲染)
一.背景:页面为何会卡? 1.1 等待时间长(性能) 项目本身包/第三方脚本比较大. JavaScript 执行阻塞页面加载. 图片体积大且多. 特别是对于首屏资源加载中的白屏时间,用户等待的时间就越 ...
- paddlepaddle模型的保存和加载
导读 深度学习中模型的计算图可以被分为两种,静态图和动态图,这两种模型的计算图各有优劣. 静态图需要我们先定义好网络的结构,然后再进行计算,所以静态图的计算速度快,但是debug比较的困难,因为只有当 ...
- 美团金融扫码付静态资源加载优化实践
原文链接:https://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651747208&idx=1&sn=b9fc54300 ...
最新文章
- 基于Python的人工智能美颜系统
- 如何快速实现物联网行业中的实名认证
- Sublime Text 3 注册激活码
- 引用类型String的操作
- Markdown: Basics (快速入门)
- 前端开发工程师和美工 知识需求的区别
- textarea还剩余字数统计
- 一个通用的Makefile模板-转
- 浏览器同源与跨域问题总结
- python统计文本单词总数_python统计文本文件内单词数量的方法
- centos7安装源疯了_Jenkins 在 Centos7 上安装(使用国内源)
- 强悍的 Linux —— tar
- Linux系统编程 --- 系统调用
- kotlin学习---Field
- 2021东北四省赛部分题解
- 微信备份服务器,数码早知道 篇五:终于支持微信备份了!群晖Drive X 内测信息流出汇总!...
- 20元制作笔记本电脑防偷窥神器
- 【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑
- Centos下搭建个人网站
- 利用阿里云容器镜像服务下载gcr.io镜像
热门文章
- asp.net错误处理的三种方法
- JavaAgent的使用总结
- 实时人脸识别例子-tensorflow2.x keras
- python 获取键盘输入、同时有超时的功能_python 获取键盘输入,同时有超时的功能示例...
- 花书 —— 机器学习基础
- C++/C--Windows下获取键盘事件
- Matlab--view函数详解
- 入门讲解:使用numpy实现简单的神经网络(BP算法)
- 运维常用进程查看命令
- php查真实地址,php教程:检查URL地址是否真实存在