面向对象三大特性(封装/继承/多态)

引入:在面向对象思想中,有三大特性,封装  继承  多态。

思考:我们在使用类和对象实现编程的时候,到底是遵循这什么样的逻辑呢?为什么要这样规范类呢?

引入:面向对象很重要的思想就是隐藏,即外部不知道类内部是如何实现业务逻辑的,只管调用和使用结果,这个就是面向对象三大特性之一:  封装

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是弱类型语言,不支持多态。

原文地址:https://www.cnblogs.com/xiaowie/p/12287269.html