博客列表 >类和对象

类和对象

莫名的博客
莫名的博客原创
2018年01月27日 19:46:131043浏览

类和对象

类是一类属性和操作方法的集合,而对象是类的实例,类是对象的抽象。

类的三大特性:

封装(让类的属性私有化,利用内部方法对外提供接口)

继承(使得一个类能够使用另一个类的所有方法和属性,这无疑提高代码的重用性)

多态(利用接口的特点来实现抽象,顶层紧紧是个抽象概念,具体实现由类完成,使得程序的扩展,重用更加方便)

静态和常量:

  • 使用static声明的为静态的方法或者属性

  • 静态的方法或者属性是由类直接调用的,例:ClassName::method()

  • 静态的方法或者变量会一直存储在内存中,直到脚本的运行结束

  • 类中常量与静态属性都是由类直接调用,不同的是常量一旦赋初值,就不能改变

构造方法和析构方法:

  • php中使用__construct()来定义一个构造方法,当初始化一个对象时,自动调用

  • 构造方法的一般是用来初始化类中的属性

  • php中使用__destroy()来定义析构方法,当对象的所有引用都被删除或者显示删除对象时,自动调用

  • 析构方法,是用来释放资源连接

类的自动加载:

使用场景:当我们使用自己或者别人编写的类时,要对其进行include,而我们不能一个个去包含他们,这样,既麻烦也可能忽略一些需要的类

作用:调用某个类时,自动去包含该文件

例:spl_autoload_register(function($classname)){ require_once $classname.'php'}


抽象类和接口

接口与抽象类的相同点:

  • 1.抽象类与接口中都有抽象方法

  • 2.接口和抽象类都不能直接被实例化

特殊点:

  • 1.接口中的所有方法必须是抽象方法

  • 2.接口中的成员属性必须是常量

  • 3.接口的实现使用implements,抽象类的实现使用extends

  • 4.接口中的方法都是public类型,而抽象类中的方法可以使用private、protected或public来修饰。

  • 5.接口中不可以声明变量,但可以声明类常量.抽象类中可以声明各种变量

  • 6.接口没有构造函数,抽象类可以有构造函数。

  • 7.一个类可以同时实现多个接口,但是只能实现一个抽象类。

接口的应用细节:

  • 1.接口可以继承接口(只有扩展,没有覆盖)

  • 2.类和抽象类都能实现接口,但是不能继承

  • 3.可以实现多个接口,用逗号分隔


trait

与其他语言不同的是,php使用了trait,一种代码复用的机制

例:

trait demo { function getName(){}}        //定义一个trait结构

class people{ use demo}                        //相当于把trait结构里的代码复制进来

相同方法的覆盖优先级: 本类 > triat > extends

多个trait,方法冲突的解决方法,给方法取别名 use demo { getName as protected myName;}

注意,triat里面还可以定义,属性,静态变量,静态方法,抽象方法,


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议