02面向对象静态继承.docx

上传人:b****8 文档编号:28365585 上传时间:2023-07-10 格式:DOCX 页数:15 大小:1.11MB
下载 相关 举报
02面向对象静态继承.docx_第1页
第1页 / 共15页
02面向对象静态继承.docx_第2页
第2页 / 共15页
02面向对象静态继承.docx_第3页
第3页 / 共15页
02面向对象静态继承.docx_第4页
第4页 / 共15页
02面向对象静态继承.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

02面向对象静态继承.docx

《02面向对象静态继承.docx》由会员分享,可在线阅读,更多相关《02面向对象静态继承.docx(15页珍藏版)》请在冰豆网上搜索。

02面向对象静态继承.docx

02面向对象静态继承

回顾

面向对象:

是一种思想。

寻找事务操作的主体,按照主体进行分类,完善各个功能。

基本概念:

类,对象,实例化

类:

是对具体实体的抽象化(把一些共性都抽离出来,形成一个计算机能够识别的结构)

对象:

是对类的具象化

实例化:

从类制造对象的过程new

类:

class

类成员:

属性(类中的变量),方法(类中的函数)和类常量

访问修饰限定符:

public,private和protected

属性和方法的访问

1.对象和方法都是通过对象进行访问

2.公共的属性和方法,可以通过对象直接进行访问

3.私有的属性和方法,只能通过对象去调用类中的公有方法,并在公有方法里面去访问私有成员

4.在类里,可以使用$this来代替某个外部正在调用类方法的对象

对象的传值:

引用传值

对象的比较:

对象的比较是比较类,比较属性个数,比较属性的值

类常量:

const

1.对象不能访问常量

2.类访问:

类名(self):

:

常量名,__CLASS__获取当前类的类名

魔术方法:

构造方法和析构方法

构造方法:

__construct(),用来初始化对象(属性的赋值)

析构方法:

__destruct(),用来释放资源

自动加载:

__autoload()魔术函数

实现函数:

在函数中加载指定的类文件

self与$this的区别

1.区别:

代表不一样的内容:

self代表类,$this代表对象

2.区别:

访问的内容也不一样:

self访问类常量,$this访问属性和方法(普通)

3.区别:

self与$this访问数据的方式不一样,self使用范围解析操作符(:

:

),$this使用对象访问符(->)

4.相同:

都是在类中使用(都是在方法里面使用)

静态(static)

在类中也有类似函数的静态变量之类的东西,(函数中:

不被重复定义,函数的多次调用共有一个静态变量),使用静态修饰的表示该属性或者方法属于类,不会因为对象的实例化而改变其本身的内容。

语法:

1.静态属性:

访问修饰限定符static属性名字

2.静态方法:

访问修饰限定符staticfunction方法名字(){}

静态访问:

类:

:

静态属性或者静态方法

需求:

当类创建一个对象时,使用一个计数器将对象的数量给记录下来。

见代码:

demo01_static.php

静态方法使用

静态与非静态的区别

1.设置出发点:

静态是给类使用,非静态是给对象使用

2.对象不能访问静态属性(对象访问属性只会去对象的内存区域(堆)找,而静态属性在代码区),对象能够访问静态方法(静态方法和普通方法都在代码区里)

3.类能够访问普通方法(方法里面没有使用$this),类不能访问普通属性(属性是在对象空间里)

魔术方法

对象输出

__toString():

将一个对象变成字符串,写在类里面。

当对象被使用echo进行输出的时候,系统会自动调用该方法

对象克隆

对象的另外一种产生方式,不是从类产生对象,从对象本身产生对象

克隆:

将一个对象完整的复制一份,新开辟一块内存空间,将复制的结果存放到该内存里面。

语法:

新对象(变量)=clone对象(变量)

__clone():

当一个对象被clone的时候会自动调用的方法

克隆对象的时候,不走构造方法。

__clone()是由被克隆出来的对象去调用。

设计模式

设计某个程序的方式。

php中设计模式不多,有两个是需要讲:

单例模式和工厂

单例模式:

一个类只能最多创建出一个对象。

实现单例,必须满足以下条件:

1.不让克隆(私有化克隆魔术方法)

2.不让创建对象(私有化构造方法),不能在类外部使用new关键字创建对象。

3.进入到类中,创建对象(静态方法)

4.要在类中使用静态属性来保存已经产生的对象,用于判断

单例模式代码见:

demo06_single.php

单例模式的好处?

1.只能创建一个对象,能够节省资源(内存)

单例模式:

满足三私一公

三私:

私有构造方法,私有克隆方法,私有静态属性

一公:

公共静态方法(产生对象)

不是所有的面向对象都有类这个概念。

js是一门面向对象的语言,但是js没有class这个概念。

js中的类就是函数。

OOP(ObjectOrientedProgramming)

面向对象编程有以下几个特点:

封装,继承,多态

封装

将某类数据的共同特性抽离出来,形成计算机可以识别的代码的过程就称之为封装(抽象),将数据(属性)以及对数据的操作(方法)捆绑到一起,形成一个整体(class),对外隐藏技术实现(外部不知道内部具体是如何实现的),只提供调用的接口(public修饰的外部访问:

属性和方法)。

封装--------形成类的过程

继承

继承的现实意义:

后代拥有父代的财产和能力

程序的继承:

现象对象才有的概念,如果某个类与另外一个类基本上功能差不多,然后稍微会多出一点功能。

将这个多出功能的类定义为一个子类,然后基本功能的类定义为父类,然后将子类继承父类。

子类的对象能够拥有子类和父类的所有属性(public和protected)以及方法的使用。

classFather{

protected$house;

}

classSon继承Father{

}

$son=newSon();

$son就拥有$house属性

抽象具有层级性。

继承好处

1.减少代码量

多态

多态:

多种形态,面向对象,要有继承,重写

php中不支持多态。

classFather{

publicfunctionchifan(){

system.println(‘父亲吃饭’);

}

}

classSon继承Father{

publicfunctionchifan(){

system.println(‘儿子吃饭’);

}

}

Fatherf=newSon();//对象是Son的对象,对象的数据类型是Father

f.chifan();//儿子吃饭

重写:

override在子类中有与父类同名的方法,内容不一样,子类重写父类的方法。

重载:

overload,php又不支持,因为php是弱类型语言,php不支持同名函数或者方法

重载就是在一个类中可以根据方法的返回值或者参数列表的不一样,形成不同的方法,方法的方法名字却相同

classPerson{

publicintfunctioneat(){

return1;

}

publicstringfunctioneat(){

return‘1’;

}

publicintfunctioneat(inti){

returnI;

}

publicintfunctioneat(strings){

returninteger(s);

}

}

继承

如何实现类与类之间的继承呢?

需要一份遗嘱:

extends

语法

class父类{

}

//继承

class子类extends父类{

}

继承实例

属性继承:

所有的非静态属性都被继承

方法继承

1.公有的可以被继承

2.受保护的可以被继承

3.私有的不能被继承

继承内存原理

访问父类的私有属性

继承链

1.凡是使用了extends继承,继承是双向的。

只要在继承链上,就可以对链上的其他类的公有和受保护的方法进行访问。

2.在php中不支持多重继承(一个子类继承自多个父类),使用链式结构实现多重继承

AextendsB

CextendsA:

C既有A类的属性和方法,又有B类的属性和方法。

私有的属性或者方法都必须在对应的类中才能被访问,其他地方都不可以。

如果子类拥有与父类同名的属性或者方法会怎么样?

重写

当子类拥有与父类同名的方法或者属性的时候,会重写父类的属性和方法。

(非私有的)

属性重写

方法重写

证明

如果在子类重写了父类的方法之后,需要父类的同名方法也执行。

parent关键字:

代表父类

特殊类

final类

父类的方法不允许子类重写。

final:

最终的意思

类:

final修饰的类,表示该类不能被继承。

方法:

final修饰的方法,不允许子类重写

重写要求:

子类的权限要比父类的权限要开放

abstract类

抽象类:

只能被继承的类,不能被实例化

抽象方法:

方法只有名字没有方法体

abstractpublicfunctioneat();

继承抽象类的子类必须实现全部的抽闲方法。

被继承

抽象类的意义

1.只能被继承

2.子类必须实现父类的抽象方法

3.在于规范团队协作能力(如果有不同的团队去实现不同的方案,有必要对不同的团队进行一些规范,相同功能该如何命名)

抽象类中可以有普通类中所有的内容。

(包括各式访问修饰限定符)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1