---恢复内容开始---

js的面向对象

  1.类 具体相同的特征的一些对象的集合。

  2.对象 具体到某一个失误了都可以叫做对象。

  3.类  通过function 定义类  所以在js里类的本质是函数,

 类的标志   首字母大写     函数内部使用this  调用函数是使用new关键字

  1.类和函数天生有两个属性是prototype和__prototype__

    prototype又是一个对象天生有一个constructor的属性,属性势函数和类本身

  2.普通对象天生有一个__proto__的属性,这个属性是对象,指向他的父类。

原型链:当我们要使用方法时,首先看这个属性是不是私有的,私有的就直接使用,如果私有的属性没有,就找公有的,没有就按照__proto__找它的类上有没有,直到找到基类Object,如果Object。直到Object没有就undefined了。这种查找机制叫原型链。

  3.继承       <请翻阅之前的文章>

4.引用关系

  

  这两者的区别在于 :前者不会改变原有的引用关系,而后者会改变原有的引用关系

5.拷贝      同三

  php的面向对象

    1.类的创建   class创建类

  2.对象的创建  使用new关键字

  3.成员的添加

  添加成员需要    三个修饰符

    public   公开的       定义公共的属性和方法,类的外部,类的内部,子类都可以使用

    protected     受保护的    定义受保护的属性和方法    只能在类的内部和子类里使用

    private  私有的    定义私有的属性和方法        只能在自身的类里使用

    方法成员如果前面不加修饰符$      默认是public

  4.成员调用使用->符号

  

  使用成员属性和方法的时候,属性和方法前面不带$符

  

  5.特殊队形$this指向实例化的对象,如果类的方法里想使用类的其他属性和方法得需要使用$this对象

  6.构造函数function__construct()构造函数在new实例化的时候系统会自动调用

  7.析构方法

  我们每次new实例化,系统就会给这个对象分配一个内存空间,如果不销毁,系统压力会很大,系统有一个析构方法__destruct对象实例化之后系统会自动调用,内存销毁的原则是先进后销。

  

  8.成员赋值

  

  9.php中的继承使用关键字  extends

 10.   类众常量    使用const关键字定义常量,常量在定义和使用的时候不能带$符。

  使用的时候不能带$this使用范围修饰符 ::  前面还是这个类名或self

  如果子类访问父类的常量      使用parent::常量名

  11.静态变量    在变量前加上关键字static静态属性        不能使用->访问了,使用类名::$变量名;

  12 重载  覆盖

  子类继承父类的方法时,如果子类有和父类同名的方法,从父类那继承的方法就会被覆盖掉,这个就叫重载。

  如果父类的方法前面加上final则子类无法重载父类的方法,就就会报错。

13

类内部的对象$this和内存原理

$this他是一个对象 指向实力化的那个对象

------------------------------------------------------------------------------------------------

当我们new实例化的时候,系统会给这个对象分配一个内存空间,内存空间分一个栈内存,一个堆内存,将变量存在栈里,将代码块存在堆里,然后将堆的内存地址指向栈中的变量,如果再给这个栈中的变量赋值引用数据类型,那么这个内存地址就会被更改。

-----------------------------------------------------------------------------------------------

变量a和变量p都指向同一个引用地址,二者是同一个对象,一变都变。思考:如果让二者是两个不同的对象,改变a但是p不跟着改变,需要使用对象克隆。clone

  通过关键字clone来复制一个一模一样的对象,但是而者不是同一个对象

--------------------------------------------------------------------------------------------------------

静态成员

静态成员的添加

在成员属性     成员方法     前面加上static关键字就可以了

静态成员的访问

  第一中在类的内部方法中访问

  在类的外部访问

--------------------------------------------------------------------------------

面向对象的三大特征

封装:对外只告诉如何操作,内部结构不需要你知道。

对外只提供可操作的接口(方法), 对内的数据操作不可见

继承

子类可以继承父类的属性和方法,但是有限继承,public、protected、private修饰的属性

可以继承protected public 修饰的方法   子类可以继承  父类的常量也可以继承。

多态:php没有多态,因为php是弱类型语言,不会对变量提前进行类型声明,但是有重载

重载:父类和子类  方法相同 子类会覆盖父类的方法

---------------------------------------------------------------------------------------

关键字parent

  在继承中的子类,有这个parent。访问父类的常量,父类的方法,父类的静态属性,属性成员不能访问。

10 abstract 代表抽象类

如果项目经理需要对所有的子类进行规范,就是说有些成员必须有,且必须使用那些名字。

就需要使用抽象类这个概念。

1.抽象类不能被实例化

2.如果一个类里面有一个方法被申明为抽象类了,这个类就得申明为抽象类

3.只要这个方法被声明为抽象方法了,就不能写函数体。将函数后面{}去掉,函数体由子类去实现

4.在继承一个抽象类的时候,子类必须定义父类中的所有抽象方法。不是抽象方法子类可以不去定义

11.接口interface

接口的用途和抽象类差不多,都是为了写一些规范

  1. 使用interface关键字定义接口,接口在方法都是空的没有函数体。
  2. 接口中所有方法都是public
  3. 使用implements 这个操作符

4.一个类可以实现多个接口,接口和接口之间只要,隔开

5.接口和接口之间方法尽量不要重名,如果重名了,那么参数等要保持一致

抽象类和接口的区别

  1. 接口使用implements 而抽象类使用extends 实现
  2. 接口中只能申明公有的方法  抽象类属性  常量 方法 都可以申明
  3. 接口没有构造函数 抽象类有
  4. 接口可以实现多个接口 但是抽象类只能继承一个

---恢复内容结束---

js面向对象和php面向对象的区别的更多相关文章

  1. 面向对象和结构化程序设计的区别X

    面向对象和结构化程序设计的区别 结构化程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的.转移语句可以使程序的控制流程强制性的转向程序的任一处,在传统流程图中,就是用上节我们提到的" ...

  2. js是函数式的面向对象编程语言

    js是函数式的面向对象编程语言,而非类式的面向对象编程语言

  3. AJPFX总结面向对象(this和super的区别和应用)

    面向对象(this和super的区别和应用)(掌握)* A:this和super都代表什么        * this:代表当前对象的引用,谁来调用我,我就代表谁        * super:代表当 ...

  4. JS - ES5与ES6面向对象编程

    1.面向对象 1.1 两大编程思想 1.2 面向过程编程 POP(Process-oriented programming) 1.3 面向对象编程 OOP (Object Oriented Progr ...

  5. DOM对象和js对象以及jQuery对象的区别

    DOM对象和js对象以及jQuery对象的区别 DOM对象和js对象以及jQuery对象的区别 一.DOM对象 文档对象模型简称DOM,是W3C组织推荐的处理可扩展置标语言的标准编程接口. DOM实际 ...

  6. 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍

    面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...

  7. <一>面向对象分析之面向对象和面向过程

    面向对象        ---->注重的是拆分,组装.        ---->封装,继承,多态,复用(只是现象)        ---->面向对象变成的目标从来就不是复用.相反,对 ...

  8. JAVA(一)JAVA基础/面向对象基础/高级面向对象

    成鹏致远 | lcw.cnblog.com |2014-01-23 JAVA基础 1.开发环境搭建 JAVA程序的执行流程 JAVA命令->要使用一个*.class文件(类文件)->通过c ...

  9. C#面向对象 什么是面向对象

    1.面向对象(Object Oriented,OO) 是当前计算机界关心的重点,它是90年代软件开发方法的主流.面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围.如数据库系统.交互式界 ...

  10. 『无为则无心』Python面向对象 — 45、面向对象编程

    目录 1.面向对象编程的概念 2.面向对象编程和面向过程编程的区别 (1)面向过程编程 (2)面向对象编程 3.举例理解面向对象 4.Python的面向对象编程 5.面向对象的几大核心特性 1.面向对 ...

随机推荐

  1. docker基础---数据卷volumes

    1.数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 卷会一直存在 ...

  2. python之可变长参数

    参数组:*args,**kwargs 实参有按位置和按关键字两种形式定义,*args和**kwargs 位置参数:按照从左到右的顺序定义的参数 位置形参:必选参数 位置实参:按照位置给形参传值 关键字 ...

  3. 明确MangoDB在企业中应用

    目录 1.MongoDB是什么? 2.为什么要用MongoDB? 3.主要特性 4.C/S服务模型 5.完善的命令行工具 6.几个shell实操 7.在Java中使用MongoDB 明确MongoDB ...

  4. 【算法】Bert预训练源码阅读

    Bert预训练源码 主要代码 地址:https://github.com/google-research/bert create_pretraning_data.py:原始文件转换为训练数据格式 to ...

  5. iOS UIView Class Translation

    类 UIView 一个管理屏幕上矩形区域内容的对象.   概述 Views 是你应用的用户界面最基础的组成部分.UIView类定义了对于所有 views 的共有的行为.一个 view 对象在它的边界矩 ...

  6. 学习java23种设计模式自我总结

    首先先做个广告,以前看过@maowang 这位大神转的Java开发中的23种设计模式详解(转) ,但是看了之后都忘差不多了, 所以,开个帖子边学习边自我总结(纯手敲).一直以来像这种需要长久的运动,真 ...

  7. [转] 使用Node.js实现简易MVC框架

    在使用Node.js搭建静态资源服务器一文中我们完成了服务器对静态资源请求的处理,但并未涉及动态请求,目前还无法根据客户端发出的不同请求而返回个性化的内容.单靠静态资源岂能撑得起这些复杂的网站应用,本 ...

  8. 获取Ajax通信对象方法

    function getXHR() { // 该方法用于获取Ajax通信对象 var xhr = null; if (window.XMLHttpRequest != null && ...

  9. 开源APM系统skywalking介绍与使用

    介绍 SkyWalking 创建与2015年,提供分布式追踪功能.从5.x开始,项目进化为一个完成功能的Application Performance Management系统.他被用于追踪.监控和诊 ...

  10. python no module named _socket 原因

    python no module named _socket 原因 Lib/site-packages 不在 sys.path 中