面向对象&面向过程
面向过程思想
- 步骤清晰简单,一步接一部
- 面向过程适合处理一些简单的问题
面向对象思想
- 物以类聚,分类的思维模式,先思考问题会解决哪些问题,然后对问题进行分类。最后,才对某个分类下的细节进行面向过程的思索。
- 面向对象适合处理复杂的问题,适合需要多人协作的问题。
面向对象的三大特性
面向对象的本质:以类的方式组织代码,以对象的组织(封装)数据。
三大特性:封装、继承、多态
从认识论的角度是先有对象后有类。对象是具体的事务,类是抽象的,是对对象的抽象。
从代码运行角度是现有类后有对象。类是对象的模板。
创建与初始化对象
- 使用关键字new初始话对象
- 类中的构造器也成为构造方法,在创建对象时必须调用。且必须和类同名,没有返回类型,也不写void
- 一旦定义了有参构造方法,必须手动定义无参构造,否则报错
封装
- 该露的露,该藏的藏:我们程序设计的追求是高内聚,低耦合。高内聚指类内部的数据操作细节自己完成,不允许外部干涉;低耦合指仅暴漏少量的方法供外部使用。
- 封装(数据的隐藏)。通常,应禁止直接访问一个对象中数据的实际表示,应该通过接口访问,这称为信息的隐藏。
- 属性私有,get/set。
继承
- 继承的本质是对某一批类的抽象,从而实现对先实世界的建模。
- extends 的意思是扩展。子类是父类的扩展。
- Java中只有单继承。
- 继承是类间的一种关系,除此之外,还有依赖、组合、聚合等。
- 继承关系的俩个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。
- 子类和父类之间,从意义上应该具有“is a”关系。
- Object(任何一个类都继承的父类)、super(指向父类)、方法重写(重写都是方法,跟属性无关)。
- 继承只能继承父类中public修饰的属性和方法。
多态
- 同一个方法根据发送对象的不同而采取多种不同行为的方式
- 一个对象的实际类型是确定的,但可以指向对象的引用类型有很多
- 多态存在条件:有继承关系,子类重写父类方法,父类引用指向子类对象
- 多态是方法的多态,属性没有多态
- instanceof (类型转换)引用类型的转换,判断一个对象是什么类型