面向过程与面向对象及面向对象三大特性

2019-10-12 08:39:28来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

面向过程与面向对象及面向对象三大特性

#########################################################

今天复习一下面向对象的特性以及与面向过程的区别,并对其中的一些细节内容进行回顾!!!

#########################################################

一、面向过程与面向对象的区别?

面向过程:是一种以过程为中心的编程思想,分析出解决问题的步骤,然后用函数把这些步骤一步一步实现。面向过程编程中数据和对数据的操作是分离的。

  1)优点:性能比面向对象高,因为在类调用是需要实例化,开销比较大,比较消耗资源。

  2)缺点:没有面向对象易维护、易复用、易扩展。

面向对象:是将事物对象化,通过对象通信来解决问题。面向对象编程中数据和对数据的操作是在一起的。

  1)优点:由于面向对象有继承、封装、多态的特性,可以设计出低耦合的系统,使系统更更灵活,更易于维护。

  2)缺点:性能比面向过程低。

二、面向对象三大特性:继承、封装、多态

  1.继承:子类继承父类非私有的属性和方法,子类可以添加自己的属性和方法,子类可以重新定义父类的方法。

    1)注意:Java中是单继承,即一个子类只能继承一个父类;Java中object类是所有类的直接或间接父类;每一个子类被实现按时(new),父类会在它之前实现(被new)。

        构造函数不能被继承,子类可以通过super()显式调用父类的构造函数;创建子类时,默认调用父类的无参构造函数;如果父类没有定义无参构造函数,子类必须在构造函数的第一行使用 super()显式调用(先父后子)。

    2)为什么需要继承呢?

      第一,代码复用;第二,父类的引用变量可以指向子类对象。

  2.封装:即隐藏对象的属性和实现方法,仅对外提供公共的访问方法。

    1)为什么需要封装呢?

      封装符合面向对象设计的单一性原则,一个类把自己该做的事情封装起来,而不是暴露给其他类去处理,当内部的逻辑发生变化时,外部调用不用因此而修改,它们只调用开放的接口,而不用去关心内部的实现。

    2)实现:将属性私有化;仅提供公开的方法(一个负责获取内容(get),一个负责修改内容(put))访问私有属性。

    3)优点:提升了代码的安全性和隐私性;能减少耦合;类内部的结构可以自由修改;

  3.多态:一个对象在不同时刻体现出来的不同状态(一对多的关系)(父类引用子类对象)

    1)实现:

       重写:子类重写父类方法的实现,它是一种垂直层次关系。

       重载:指一个类中,存在方法名相同,但参数(个数、顺序、类型)不同的方法,它是一种水平层次关系。

    2)重写和重载的区别?

      重写是一种垂直关系,它是子类重写父类的方法,要求结构相同;而重载是一种水平关系,它是类内部书写多个相同名称的方法,它们通过形参列表来区分。

    3)在形参声明过程中,一般会声明的范围比较大,就可以传递父类也可以传递子类,代码的通用性就比较强。

    4)多态可以分为两种类型:编译时多态(方法的重载)和运行时多态(方法的重写)。

      运行时多态依赖于继承、重写和向上转型,向上转型是自动的,Father f = new Children(),不需要强转;向下转型需要强转,即Children c =(Children) new Father()。 

    5)Java中重写的两同两小一大规则:

        a. 方法名相同、参数列表相同;

        b. 子类方法返回类型<=父类方法返回类型

        c. 子类方法抛出异常<=父类方法抛出异常

        d. 子类方法访问权限>=父类方法访问权限

      声明为final和static的方法不能被重写;如果一个方法不能被继承,则不能被重写。

      


原文链接:https://www.cnblogs.com/HuiH/p/11661624.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:ActiveMQ学习总结------实战操作(上)02

下一篇:实战SpringCloud响应式微服务系列教程(第七章)