面向对象的特征——封装和多态
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象的特征——封装和多态相关的知识,希望对你有一定的参考价值。
一.封装
1.封装的定义:
封装就是把对象的属性和行为结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节。
2.封装的优点:
①信息隐蔽,封装即隐藏。
②封装的原则在软件上的反映是:
要求使对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它的“交叉感染”,
使软件错误能够局部化,大大减少查错和排错的难度。
③类的封装性带来的优点:
隐藏类的实现细节,让使用者只能通过事先定义好的方法来访问数据,可以方便的加入逻辑控制,
进行数据检查,限制对属性的不合理操作。便于修改增强代码的可维护性
例如:
计算三角形的面积函数
public function area($bottom, $height)
{
return $bottom*$height/2;
}
4.在php中通过以下三种方法来完成:
private:声明私有的
protected:声明需要权限的
public:声明公共的
二.多态
对象的多态性是指在父类中定义的属性或行为被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在父类及其各个子类中具有不同的语义。
多态这个概念,在 Java 中指的是变量可以指向的对象的类型,可是变量声明类型的子类。对象一旦创建,它的类型是不变的,多态的是变量。
PHP5 中,变量的类型是不确定的,一个变量可以指向任何类型的数值、字符串、对象、资源等。我们无法说 PHP5 中多态的是变量。
我们只能说在 PHP5 中,多态应用在方法参数的类型提示位置。
一个类的任何子类对象都可以满足以当前类型作为类型提示的类型要求。
所有实现这个接口的类,都可以满足以接口类型作为类型提示的方法参数要求。
简单的说,一个类拥有其父类、和已实现接口的身份。
1.抽象的特征和作用:
①可以使用 abstract 来修饰一个类或者方法。
②用 abstract 修饰的类表示这个类是一个抽象类, 用 abstract 修饰的方法表示这个方法是一个抽象方法。
③抽象类不能被实例化。
④抽象方法是只有方法声明,而没有方法的实现内容。
⑤可以使用 abstract 来修饰一个类。
⑥用 abstract 修饰的类表示这个类是一个抽象类。
⑦抽象类不能被实例化。
⑧用 abstract 修饰的类表示这个方法是一个抽象方法。
⑨抽象方法,只有方法的声明部分,没有方法体。
⑩抽象方法没有 {} ,而采用 ; 结束。一个类中, 只要有一个抽象方法, 这个类必须被声明为抽象类。抽象方法在子类中必须被重写。
2.接口的特征和作用:
①接口(interface)是抽象方法和静态常量定义的集合。
②接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量。
③接口中没有其它类型的内容
例如:
interface 接口名
{
public getName();
public setName($name);
}
注意:
在接口中的抽象方法只能是 public 的,默认也是 public 权限。并且不能设置成 private 或者 protected 类型
以上是关于面向对象的特征——封装和多态的主要内容,如果未能解决你的问题,请参考以下文章
类与对象 面向对象和面向过程对比 面向对象三大特征:封装 继承 多态