面向对象&面向过程
- 面向过程思想
步骤清晰,第一步做什么第二步做什么
面对过程适合处理一些简单的问题
- 面向对象思想
物以类聚,分类的思维模式
对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们要使用面对对象的思路来分析整个系统,但是具体到围观操作,仍然需要面对过程的思路去处理
什么是面向对象
-
面向对象编程(oop)
-
面向对象编程的本质是:以类的方式组织代码,以对象的组织数据
-
抽象
三大特征
- 封装
- 继承
- 多态
方法的定义
- 修饰词
- 返回值类型
- 方法名 驼峰原则,见名知意
- break和return的区别
- 参数列表
- 异常抛出
创建与初始化对象
-
使用new关键字创建对象
-
使用new关键字创建的时候,除了会分配内存空间外还会进行默认初始化以及对类中构造器的调用
-
类中的构造器也被称为构造方法,是在进行创建对象的时候必须要调用的,并且构造器有以下两种特点
-
- 必须和类的名字相同
- 必须没有返回值类型,也不能写void
- 构造器必须要掌握
构造器的核心作用
- 使用new关键字,本身就是在调用构造器
- 构造器用来初始化值
封装
- 该露的露,该藏的藏,我们程序设计追求的是“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合指的是仅暴露少量的方法给外部使用(类似于电视机)
- 封装(数据的隐藏)
- 属性私有get/set
封装的意义
- 提高程序的安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 提高系统的可维护性
继承
-
继承的本质是对某一批类的抽象
-
extends的意思是”拓展“。子类是父类的拓展
-
Java中只有单继承,没有多继承,一个儿子只能有一个爸爸
子类继承父类的所有方法!前提是public
优先级:
public >protected >default >private
快捷键:ctrl+h:打开继承表
java中都默认继承Object
super注意点:
- super调用父类的构造方法,必须在构造的方法的第一个
- super必须只能出现在子类的方法或者构造方法中
- super和this不能同时调用构造方法
Vs this:
代表的对象不同
this:指的是本身调用的对象
super:指的是父类对象的应用
前提:
this:没有继承也可以使用,super就不行
构造方法:
this():本类的构造
super():父类的构造
方法的重写:
静态方法和非静态的方法差距很大
//非静态的才可以重写
重写:需要有继承关系,子类继承父类的方法
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大,但是不能缩小
- 抛出的异常:可以被缩小,但不能被扩大
为什么要重写:
- 父类的功能,子类不一定需要,或者不一定满足
- alt +insert : override;
多态
- 动态编译:类型
- 父类引用指向子类对象
- 把子类转换成父类,向上转型
- 把父类转换成子类,向下转型,需要强转
- 强制转换会丢失精度(子类转为父类可能会丢失方法)
- 方便方法的调用,减少重复的代码!简洁