面向过程和面向对象
面向过程
就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;
面向对象
是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
什么是对象
所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。对象有以下特点:
- 对象具有属性和行为。
- 对象具有变化的状态。
- 对象具有唯一性。
- 对象都是某个类别的实例。
- 一切皆为对象,真实世界中的所有事物都可以视为对象。
面向对象的三大特征:
- 封装(カプセル化)
封装是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用。 - 継承
- 子类拥有父类的全部特征和行为,这是类之间的一种关系。
- Java 只支持单继承。
- 多态
面向对象的多态性,即“一个接口,多个方法”。多态性体现在父类中定义的属性和方法被子类继承后,可以具有不同的属性或表现方式。多态性允许一个接口被多个同类使用,弥补了单继承的不足。
抽象類和接口
- 抽象类与接口的区别最重要的区别是,接口的方法不可以有实现,并且是绝对的抽象方法。
- 抽象类可以有实例方法用来实现默认行为。
- 接口中的变量申明默认是final, 而抽象类中变量申明可以是非final。
- 接口中的成员默认是public修饰,而抽象类中成员可以是private, protected等等。
多态的应用
多态
- 多态是同一个行为具有多个不同表现形式或形态的能力。
- 多态就是同一个接口,使用不同的实例而执行不同操作。
- 多态是执行同一个行为(方法),但是因为实例(对象)不同,而产生不同的效果;
- 前提:不同的实例(对象)需要遵从或者继承同一个接口或者父类。
多态存在的三个必要条件
* 继承。is-A
* 重写。(override)
* 父类引用指向子类对象
- 可以把父类(接口)作为数组的数据类型。这样的话,数组或者集合里就可以存储所有继承或者遵从父类的子类对象
- 可以吧父类(接口)作为方法的参数数据类型。这样的话,方法就可以接受所有继承/遵从父类(接口)的子类对象作为参数。
多态理解
多态应用之一,是可以把父类作为集合、数组、函数参数的数据类型
这样的话,可以传递所以继承父类的子类对象
- 如何理解
可以把数据类型想象成通道,把对象想象成可以通过通道的小球
原来,是子类类型,子类对象,小球可以恰好通过通道
现在,利用多态以后,是父类类型,也就相当于把通道变宽,
这样的话,所有子类对象,也就是子类小球都可以通过通道