面向对象语言编程三大特点-封装,继承,多态

面向对象的三个基本特征是:封装、继承、多态

封装:可以隐藏实现细节,使得代码模块化;
继承:可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。
多态:则是为了实现另一个目的——接口重用!

现在仔细讲一下

什么是封装?
封装可以隐藏实现细节,使得代码模块化;在面向对象编程上可理解为:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

封装的意义?

封装的意义在于保护或者防止代码(数据)被我们无意中破坏。在面向对象程序设计中数据被看作是一个中心的元素并且和使用它的函数结合的很密切,从而保护它不被其它的函数意外的修改。

  1. 保护数据成员,不让类以外的程序直接访问或修改,只能通过提供的公共的接口访问==>数据封装 ;
  2. 方法的细节对用户是隐藏的,只要接口不变,内容的修改不会影响到外部的调用者==> 方法封装;
  3. 当对象含有完整的属性和与之对应的方法时称为封装;
  4. 从对象外面不能直接访问对象的属性,只能通过和该属性对应的方法访问;
  5. 对象的方法可以接收对象外面的消息;

什么是继承?
继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。其继承的过程,就是从一般到特殊的过程。
通过继承创建的新类称为“子类”或“派生类”。被继承的类称为“基类”、“父类”或“超类”。要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。

继承的实现方式?
继承概念的实现方式有三类:实现继承、接口继承和可视继承。

  1. 实现继承是指使用基类的属性和方法而无需额外编码的能力;
  2. 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;
  3. 可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力;

什么是多态?
“一个接口,多种方法”,同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。

多态的三个条件?

  1. 继承的存在(继承是多态的基础,没有继承就没有多态);
  2. 子类重写父类的方法(多态下调用子类重写的方法);
  3. 父类引用变量指向子类对象(子类到父类的类型转换);

重载(overload)和重写(override)是实现多态的两种主要方式。

注意:php 中没有重载,只有子类的重写(也就是重写方法部分逻辑),想要实现重载,这比要的时候通过 trait 关键词来实现。

原文地址:https://www.cnblogs.com/fangdada/p/15028691.html