面向对象
面向对象思想:
- 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。
- 面向对象适合处理复杂的问题,适合处理需要多人协作的问题!
宏观上,面向对象,微观上,面向过程
什么是面向对象
本质:一类的方式组织代码,以对象的组织(封装)数据。
抽象
三大特性:
- 封装
- 继承
- 多态
类与对象关系
类是一种抽象的数据类型
对象是抽象概念的具体实例
封装
该露的露,该藏的藏
- 高内聚,低耦合
继承
继承是对某一批类的抽象
在java中所有类都继承object
子类继承父类,会拥有父类的方法,私有无法继承
super调用父类的方法和属性,除非私有;
super调用父类的构造方法,必须在构造方法的第一个
super必须只能出现在子类的方法或者构造方法中
super和this不能同时调用构造方法
super和this不同:
代表对象不同:
this:本身调用者这个对象
super:代表父类对象的应用
前提
this:没有继承也可以使用
super:只能在继承条件下才可以使用
构造方法:
this();本身的构造方法
super();父类的构造方法
方法的重写
重写:需要有继承关系,子类重写父类的方法
1. 方法名必须相同
2. 参数列表:范围可以扩大但不能缩小
3. 修饰符:范围可以扩大但不能缩小:public ->Protected->Default->Private
4. 跑出的异常:范围,可以被缩小,但不能扩大: ClassNotFoundException -->Exception(大)
重写:子类的方法要和父类必要一致:方法体不同!
为什么需要重写:
- 父类功能,子类不一等需要。或不一定满足
多态
注意事项:
多态是方法的多态,属性没有多态
父类和子类,有联系,类型转换异常!ClassCastException!
存在条件:继承关系,方法需要重写,父类引用指向子类对象!
无法被重写:static 方法 ,属于类 ,他不属于示例
fianl 常量
private方法
抽象类
接口
- 只有规范,自己无法写方法,专业的约束,约束和实现分离:面向接口编程
- 接口的本质是契约
作用:
约束
定义一些党发,让不同的人实现
方法都是public abstract
属性都是public static final
接口不能被实例化,接口中没有构造方法
implements可以实现多个接口
必须要重写接口中的方法
内部类
成员内部类
静态内部类
局部内部类
匿名内部类
异常
程序出错。
程序运行中出现预期之外的错误!
异常体系结构
Error和Exception的区别
Error通常是灾难性的致命的错误,是程序无法控制和处理的
Exception通常情况下是可以被程序处理,并且在程序中应该尽可能的去处理这些异常
异常处理机制
抛出异常
捕获异常
异常处理五个关键字:
try catch finally throw throws
自定义异常
用户自定义异常类,只需要继承Exception类即可