面向对象三大特性(封装/继承/多态)
Posted xiaowie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象三大特性(封装/继承/多态)相关的知识,希望对你有一定的参考价值。
引入:在面向对象思想中,有三大特性,封装 继承 多态。
思考:我们在使用类和对象实现编程的时候,到底是遵循这什么样的逻辑呢?为什么要这样规范类呢?
引入:面向对象很重要的思想就是隐藏,即外部不知道类内部是如何实现业务逻辑的,只管调用和使用结果,这个就是面向对象三大特性之一: 封装
1.封装【掌握】
定义:封装,字面意思就是将内容装到某个容器中,并进行密封保存,在面向对象思想中,封装指数据和对数据的操作捆绑到一起,形成
对外界的隐藏,同时对外提供可以操作的接口。
1.数据:即要操作的数据,在面向对象的具体体现就是类成员属性,(属性和静态属性)和类常量,这些都是在类的内部定义的用来保存数据的。
2.数据的操作:即数据加工过程,在面向对象的具体体现就是方法,内部定义业务逻辑对数据进行加工处理。
3.捆绑到一起:即使用类结构{}将属性,类常量和方法存放到一起,称为整体。
4.对外提供可操作的接口:即提供可以供外部访问的类成员(通常指的是方法)。
<?php class student{ //捆绑内容到一起,形成对我i姐隐蔽的整体 const COUNT=1000; private static $name="杜伟"; private $sex="男"; //数据属性和类常量的保存 public function show(){ //数据的操作 return self::$name; } } $xim=new student(); echo $xim->show(); //外部只能访问类中公有的方法,具体实现不可见 ?>
总结:
封装是从对象抽象形成类的过程。
封装是一种将数据和数据操作捆绑到一起,形成对外部的隐蔽,同时提供对外操作的接口。
封装是面向对象第一大特性,也是面试官喜欢询问对面向对象思想理解的知识。
思考:面向对象思想是符合人类的思维逻辑的,那显示中的“富二代”指类的能过够在面向对象思维具体体现吗?
继承【掌握】
定义:继承,既有些类似的对象中,如人是一种大类,下面可以细分出一些小类,如男人,女人等,然后有一些公共的特性可以在一些基础类中体现,二其他相似或者较小
类可以直接使用上级类中的公共代码。
1.继承基础:子类(要继承其他类的类,也称为派生类)与父类(被继承的类,也称为基类)之间本身是一种包含与被包含关系,如此才有课继承的前提
<?php //基类 class posen{ //人类 } class man{ //男人 } class wman{ //女人 } ?>
2.继承关键字extends 子类想要继承父类,则必须在子类结构申明时明确使用extensa关键字来继承相关类
<?php //基类 class posen{ //人类 } class man extends posen{ //男人类继承人类 } class wman extends posen{ //女人类继承人类 } ?>
3.继承效果:子类可以不用自己去实现某些功能,二可以直接访问父类中已经存在的成员
<?php //基类 class posen{ //人类 function eat(){ echo "吃饭"; } } class man extends posen{ //子类为空类,没有类成员 } $s=new man(); //实例化子类 $s->eat(); //输出吃饭
总结
1.继承extends是面向对象中实现代码重复利用的重要特性
2.继承是指子类可以直接访问父类中已经存在的成员
3.继承可以节省代码工作,同时允许子类中进行扩展,即在子类中增加必要的父类不存在的功能
多态【了解】
定义:多态,是指在发生类的继承的情况下,同时出现方法的重写(override),即子类拥有与父类同名的方法。然后在
实例化对象的时候让父类对像(强制类型,php不支持),父类对象表现的子类对象的特点。
1.php是弱类型语言,所以不存在变量的强制类型,因此php不支持多态。
总结:
1.多态的发生必须有继承关系,并且子类要重写父类方法
2.多态是指父类对象拥有子类形态,并且可以表现出子类的特性(调用子类方法)
3.php是弱类型语言,不支持多态。
以上是关于面向对象三大特性(封装/继承/多态)的主要内容,如果未能解决你的问题,请参考以下文章