面向对象理解

个人理解中的面向对象

  • 如何理解面向对象和面向过程
  • 面向对象有几大特征
  • 抽象和封装有何区别
  • 接口与抽象有何区别

面向对象和面向过程

    1. 面积过程就是分析出解决问题所需要的步骤,然后用函数的形式把这些步骤一步一步实现,使用时依次调用即可。举一个不算好的例子 :
      面馆阿姨要给客人煮面,煮面的过程中是如何下面,下配菜,装碗等过程,都是要阿姨一步步完成的。
    1. 面向对象是把构成问题的事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。例如上面一个例子,阿姨是如何煮面的,我们并不关心,我们只需要告诉阿姨你要吃什么面,阿姨会给你做,你只需要付钱即可。

面向对象有几大特征

面向对象有三大特征,分别是封装、继承、和多态

继承 :

  • 继承是从已有类得到继承信息创建新类的过程,提供继承的类被称为父类(一般了叫超类、基类);得到继承信息的类被称为子类(也叫派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中要中可变因素的重要手段。一般呢,当一个类的属性与行为均为与现有的类相似,属于现有类的一种时,这个类可以定义为现有类的子类。换成相反的角度来看,如果多个类具有相同的属性和行为,我们可以抽取出共性的内容定义成父类。这时再创建相似的类时只要继承父类即可

封装:

  • 通常认为封装是把数据和操作的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口

多态:

  • 多态的特征是表现出多种形态,具有多种实现方式。或者多态是具有表现多种形态能力的特征。或者同一个实现接口,使用不同的实例而执行不同的操作。例如: 系统由使用人定义了一个人的对象 Person。然后实际登录系统的有几种情况,一种是系统管理人员,一种是客户,一种是系统的用户。我们前面只定义一个人来使用系统,而后台又会集体判断使用系统的是什么人,这就是多态。

抽象与封装有何区别

  • 抽象的众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。
  • 封装则是将抽象得到的数据和行为(或功能)相结合,形成 “类” ,其中数据和函数都是类的成员。
  • 抽象是更通用的术语,它的实现可以由子类完成。例如:List 类是一种集合抽象,List的具体子类有ArrayList 和 LinkedList。如果一个类暴露其内部状态,它不能在其内完全掌控改变这个状态,那么也不是抽象。
  • 封装是作为抽象策略的一部分。封装是对象封装它自己的状态,并对外将其隐藏,该类以外的其他类必须通过它的方法与状态进行交互(读写),但不能直接访问类的状态。
  • 所以封装的类是抽象了有关其状态的实现细节

接口与抽象类有何区别

  1. 语法层面

    a. 抽象类可以提供成员方法的实现细节,而接口中只有存在public asbsract 抽象方法

    b. 抽象类中成员变量可以各种类型,而接口中的成员变量必须用 public static final 修饰。

    c.接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法。

    d. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

  2. 设计层面

    抽象类一般用来表示在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同、但材质上相同的具体概念的抽象,即对类的抽象,而接口是对行为的抽象,抽象类是对整个类整体进行抽象,包括属性、行为、但是接口却是对类局部(行为)进行抽象

    举个简单的例子,飞机和鸟是不同类的事物但是它们都有会飞的共性,那么在设计时,可以将飞机设计为一个类 Airplane,将鸟设计为一个类 Bird,但是不能将飞行这个特性也设计为类,因此它只是一个行为特性,并不是对一类事物的抽象描述。此时可以将飞行设计为一个接口 Fiy,包含方法 fly(); 然后 Airplane 和Bird 分别根据自己的需要实现 Fly 这个接口。然后至于有不同的种类的飞机,如战斗机等直接继承 Airplane 即可,对于鸟也是类似的。从这里可以看出继承是一个 “是不是” 的关系,而接口实现是 “有没有” 的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现是有没有、具备不具备的关系,如鸟是否能飞行,能飞行则可以实现这个接口,不能飞行则不能实现这个接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值