面向对象编程的特征,原则

OOP:(Object Oriented Programming),面向对象的程序设计。所谓“对象”在显式支持面向对象的语言中,一般是指类在内存中装载的实例,具有相关的成员变量和成员函数(也称为:方法)。

OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。

特征一  封装

定义:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。 

目的:增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,特定的访问权限来使用类的成员。

基本要求:属性私有化,对每个属性提供getter和setter方法.

特征二  继承

目的:代码复用,并在无需重新编写原来的类的情况下对这些功能进行扩展。

继承的实现方式又分实现继承,接口继承.,可视继承

实现继承是指使用基类的属性和方法而无需额外编码的能力;

接口继承是指仅使用属性和方法的名称、子类必须提供实现的能力;

可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

特征三  多态

定义:相同的事物,调用其相同的方法,参数也相同时,但表现的行为却不同。

实现多态,重写和重载.

         [ 重载,多态在编译期的表现形式。出现在一个类中,判定重载的条件只有方法名一致,方法形参列表不同。其他的(如               返回值,访问修饰符)都不可以判定。

           重写,多态在运行期的表现形式。出现在子父类,实现类与接口中。判定重载有一个规律:“两同两小一大”

           两同:方法名和形参列表一致;

           两小:抛出的异常和返回值相容于被重写的方法.(一旦返回值是基本数据类型,

           那重写的方法返回值必须一致或者是Object)

           一大:访问修饰符大于等于被重写方法。

           注意:对于重写而言,只有可见的实例方法才可以被重写。静态方法和私有方法都是隐藏,不是重写!]

目的:增强程序的可扩展性及可维护性。

需要注意的是,子类重写父类方法时,修饰符权限不能比父类严格.

特征四  抽象

在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。是对一系列看上去不同,但是本质上相同的具体概念的抽象,我们不能把它们实例化(拿不出一个具体的东西)所以称之为抽象。比如水果,由重量.体积等共性,却没有特性(香蕉,苹果)

 

抽象和封装相似而又不同,封装考虑内部实现,抽象考虑的是外部行为.封装是屏蔽细节,抽象是提取共性.


开闭原则(Open-Closed Principle, OCP)

软件实体应该对扩展开放,对修改(对已有软件模块、特别是最重要抽象层模块的的更改)关闭。

单一职责原则SRP(Single Responsibility Principle)

功能描述对象单一,不能复杂.

里氏代换原则(对于继承)(Liskov Substitution Principle,LSP)

继承必须确保超类所拥有的性质在子类中仍然成立

接口分离原则(the Interface Segregation Principle ISP) 

一个类对另外一个类的依赖性应当是建立在最小的接口上的。

迪米特法则(对于封装)(Law of Demeter LoD)又叫做最少知识原则(Least Knowledge Principle,LKP)

对象间尽量最少了解,彻底将API接口和具体实现相分离,模块间仅仅通过API进行通信。迪米特法则的初衷在于降低类之间的耦合,也可能在一定程度上增加系统复杂度.

合成/聚合复用原则(对于继承)(Composite/Aggregate Reuse Principle,CARP)

在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些对象的委派达到复用已有功能的目的。

依赖倒置原则(the Dependency Inversion Principle DIP)

抽象不应当依赖于细节,细节应当依赖于抽象.程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

另外:常说的OOP三大特征五大原则就是指其中的 :

封装,继承,多态.

1、单一职责原则;

2、开放闭合原则;

3、里氏替换原则;

4、依赖倒置原则;

5、接口隔离原则。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值