面向对象
面向过程与面向对象
- 面向过程思想
- 步骤清晰记得,第一步做什么,第二步做什么。。。
- 面向过程适合一些较为简单的问题
- 面向对象思想
- 分类的思维模式,先考虑如何分类,再对分类进行单独思考,进一步细化
- 面向对象适合复杂的问题,适合处理需要多人协作的问题
- 对于复杂的事物,为了从宏观上把握,从整体上合理分析,就需要要面向对象的思维去分析整个系统,而到了具体的微观操作,仍然要用面向过程的思路去处理
- 什么是面向对象
- 面向对象编程(OOP)
- 面向对象编程的本质就是:以类的方式组织代码,以对象的方式组织(封装)数据
- 抽象:把一类相似的问题抽象出一个共性作为类
- 三大特性
- 封装:把数据封装保护起来
- 继承:子承父方法
- 多态:龙生九子各有不同,每个类具体的对象是不同的
- 从认知的角度来说是先有对象后有类,对象是具体的事物,类是抽象的,是对象的抽象
- 从代码的角度是先有类后有对象,类是对象的模板
方法加深
- 静态方法
- 使用static关键字修饰的方法
- 静态方法与类一起加载,在调用时直接使用类名.方法名调用
- 非静态方法
- 没有使用static关键字修饰的方法
- 非静态方法只有在类实例化后加载,调用时要有一个实例化的具体对象来调用
- 实例化:类名 对象名 = new 类名();
- 静态方法不能访问非静态方法
- 值传递与引用传递
- 值传递的本质是:我把值复制一份给你,你把它改成什么样与我无关
- 引用传递的本质是:我把值放在哪里告诉你,更改后就全部更改
类与对象的关系、创建
- 类与对象的关系
- 类是一种抽象的数据类型,它是对一类事物的描述,但它不代表某一个具体的事物
- 例如人类,植物,动物
- 对象是抽象概念的具体实例,能够体现出特点,展现出具体功能的实例,而不是一个抽象的概念
- 例如张三是一个具体的人,张三的狗旺财
- 类是一种抽象的数据类型,它是对一类事物的描述,但它不代表某一个具体的事物
- 创建与初始化对象
- 创建对象使用new关键字创建
- 使用new关键字创建时,系统会给对象分配具体的内存空间,对对象进行默认初始化和调用类中的构造器
构造器
- 构造器也称构造方法,是在创建对象时必须调用的方法
- 构造器名必须与类名相同
- 没有返回值,不写void
- 在定义类时系统自动帮你隐式生成一个无参构造器,而在自己定义了有参构造器之后就必须自己显式定义一个无参构造器
- 使用new关键字时本质就是在调用构造器
- 构造器的主要作用就是进行参数的初始化
封装
-
我们的程序设计要追求“高内聚,低耦合”,高内聚就是类的内部数据操作自己完成,不允许外部干涉,低耦合就是仅暴露较少方法给外部使用
-
封装就是把自己的数据藏起来,用户只能通过我们定义的接口(方法)才能访问
-
把属性私有化,只能通过get/set方法访问
- 使用private关键字进行私有化操作:private 数据类型 变量名
- 然后使用get/set方法进行数据的设置与获取
- 可以在set方法内设置条件,阻挡错误信息
private int age; public void setAge(int age)