php不数属于面向对象,js面向对象和php面向对象的区别

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

js的面向对象

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

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

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

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

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

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

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

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

3.继承       

4.引用关系

3ed68fd6955d5b2ab18b6aac56cc7f89.png

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

5.拷贝      同三

php的面向对象

1.类的创建   class创建类

531af025fd34913d40f6d51ca1941f21.png

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

f6b1185de6d8efeee657c40dbf93e18b.png

3.成员的添加

添加成员需要    三个修饰符

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

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

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

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

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

027342cd767a1e0aa51adae63cc4c6d9.png

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

21968c4cdffeb05c4ae01728a0685459.png

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

f0642febc3e38cc1f0806f037327e4f7.png

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

2b6e66f3344436d4bdb868656403735b.png

7.析构方法

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

fa05546df6a0404f8fe6a3ab6ac66bdc.png

8.成员赋值

f5f983e4b55bf5780da317c957cfbc84.png

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

c998a0f75f5f1ecd44fbc7f49c21afe9.png

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

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

91f7ea0e0dacb491baa9321d496ca521.png

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

5322b712d1442285e49e788b22614ed2.png

1add996dd8268779f2820f8e9407d941.png

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

f5442d85733470b91ca1496f41142153.png

12 重载  覆盖

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

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

854c3dbbab84aca6b4cba71002f786e2.png

13

fcd12c786af12cb0f83cf22584e8fd55.png

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

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

e65b8ca6880a8f0bdf5b117b8e919c37.png

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

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

a135c84a4bce81cac7a3880c863464dd.png

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

0c374cf9b654d026d126221827734667.png

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

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

4c8c4f5dcf78361c3e56f6c88d014baf.png

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

静态成员

静态成员的添加

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

静态成员的访问

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

4016bc6c45af8acd4c4b248566cf4a9a.png

在类的外部访问

b784e6e2de216792f2440c2df9500f62.png

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

面向对象的三大特征

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

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

f8e8ab2c4f79a42373cdeaa676c6febd.png

继承

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

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

8e4aa76c776ab0e1fd37bdebd37d2b1f.png

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

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

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

关键字parent

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

a8190d3965964a6424fa9b1becd8c4d2.png

10 abstract 代表抽象类

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

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

1.抽象类不能被实例化

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

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

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

b8bb304ddb60b51d75e24d2c162f3cc4.png

11.接口interface

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

使用interface关键字定义接口,接口在方法都是空的没有函数体。

接口中所有方法都是public

使用implements 这个操作符

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

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

e4f426c548d3a0017d3e656ea3cb6d97.png

抽象类和接口的区别

接口使用implements 而抽象类使用extends实现

接口中只能申明公有的方法  抽象类属性  常量 方法 都可以申明

接口没有构造函数 抽象类有

接口可以实现多个接口 但是抽象类只能继承一个

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值