面向对象
面向对象
1.面向过程&面向对象
- 面向过程
- 步骤清晰简单
- 适合处理一些简单的问题
- 面向对象
- 物以类聚,分类的思维模式,解决问题需要哪些分类,然后对这些分类进行单独思考
- 适合处理复杂问题,适合处理需要多人协作的问题
- 对于描述复杂的事务,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,任然需要面向对象的思路去处理
2.什么是面向对象
- 面向对象编程【OOP】的本质就是:以类的方式组织代码,以对象的组织(封装)数据
- 抽象
- 三大特性:封装、继承、多态
- 认知角度
- 先有对象后有类
- 对象,是具体事物
- 类,是对对象的抽象
- 代码运行角度
- 先有类后又对象
- 类是对象的模板
3.类与对象
-
类与对象的关系
- 类是一个模板:抽象
- 对象是一个具体实例
-
对象的创建与使用
-
使用new关键字创建对象
-
对象创建时会默认初始化以及调用类中的构造器
-
构造器也叫构造方法,创建对象时必须要调用的。
-
特点:和类名相同、没有返回值
-
作用
-
new的本质是在调用构造方法
-
初始化对象的值
-
-
注意:定义有参构造后,想使用无参构造,显示的定义一个无参构造
-
-
-
使用
//创建对象 Person person = new Person(); //调用对象属性 person.name //调用对象方法 person.sleep()
-
4.封装
- 高内聚,低耦合
- 属性私有,get/set
- 优点
- 提高程序的安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 系统可维护增加了
5.继承
- 什么是继承
- extends【扩展】:子类是父类的扩展
- Java中类只有单继承没有多继承
- 子类继承父类用extends关键字来表示
- 子类与父类间有“is a”的关系
- super
- super调用父类的构造方法,必须在构造方法的第一个
- super只能出现在子类的方法或构造方法中
- super和this不能同时调用构造方法
- super和this
- 代表的对象不同
- this:本身调用者这个对象
- super:代表父类对象的引用
- 前提条件不同
- this:没有继承也能使用
- super:只能在继承条件下才可以使用
- 构造方法不同
- this():本类的构造
- super():父类的构造
- 代表的对象不同
- 方法重写
- 重写
- 需要有继承关系,子类重写父类的方法
- 子类的方法和父类的方法必须一致,方法体不同
- 语法
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大,但不能缩小【public > Protected > Default > private】
- 抛出异常:范围可以被缩小,但不能扩大【ClassNotFoundException --> Exception(大)】
- 为什么需要重写
- 父类的功能,子类不一定需要,或者不一定满足
- 重写
6.多态
- 注意事项
- 多态是方法多态,属性没有多态
- 父类和子类有联系 类型转换异常【ClassCastException】
- 存在条件:继承关系,方法需要重写,父类引用指向子类对象
Father f1 = new Son();
- 无法继承也无法多态
- static方法,属于类,不属于实例
- final常量
- private方法
- 类型转换
- 父类引用指向子类对象
- 子类转换为父类,向上转型
- 父类转换为子类,向下转型,强制转换
- 方便方法的调用,减少重复代码,简洁
7.static关键字
-
静态变量【多线程】
private static int num; -
静态方法
public static void method() { } -
静态代码块
static { //静态代码块 } -
匿名代码块
{ //匿名代码块 }
8.抽象类
-
关键字:abstract
//abstract 抽象类 public abstract class Action { //抽象方法,只有方法名字,没有方法的实现! public abstract void doSometion(); } -
注意:
- 不能new这个抽象类,只能靠子类去实现它:约束!
- 抽象类中可以写普通方法
- 抽象方法必须再抽象类中
-
存在的意义
- 抽象出来,提高开发效率
9.接口
- 关键字:interface
- 作用
- 约束
- 定义一些方法,让不同的人实现
- 接口可以多继承
- 实现了接口的类就必须重写接口中的方法
- 接口不能被实例化,接口中没有构造方法

浙公网安备 33010602011771号