什么是面向对象编程
面向对象编程(OOP)
面向对象编程的本质就是:以类的方式组织代码,以对象的方式组织(封装)数据
抽象
三大特性:
- 封装
- 继承
- 多态
封装(数据的隐藏)
通常,应禁止直接访问一个对象数据的实际表示,而应该通过操作接口来访问,这称为信息的隐藏。
记住这句话:属性私有,get/set
继承
extends的意思是扩展。子类是父类的扩展
JAVA中类只有单继承,没有多继承
子类继承父类的所有的方法
super注意点
- super调用父类的构造方法,必须在构造方法的第一个
- super必须只能出现在子类的方法或构造方法中
- super和this不能同时调用构造方法
Vs this
代表的对象不同:
this:本身调用这个对象
super:代表父类对象的引用
前提:
this:没有继承也可以使用
super:只有继承条件才可以使用
构造方法:
this:本类构造
super:父类构造
重写:需要有继承关系,子类重写父类的方法
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大但是不能缩小: public>Protected>Default>private
- 抛出异常:范围,可以被缩小,但是不能扩大:ClassNotFoundException – > Exception(大)
重写,子类的方法和父类必须一致:方法体不同!
为什么要重写:
-
父类的功能,子类不一定需要,或者不一定满足!
Alt+Insert
多态注意事项
-
多态是方法的多态,属性没有多态
-
父类和子类,有联系 类型转换异常! ClassCastException
-
存在条件:继承关系,方法需要重写,父类引用指向子类对象 Father f = new Son();
1.static 方法 属于类,它不属于实例
2.final 常量
3.private 方法
抽象类
//abstract 抽象类:类 extends 单继承 (接口可以多继承)
public abstract class Person {
//约束 有人帮我们实现
//abstract 抽象方法 只有名字 没有方法的实现
public abstract void doSomething();
//1.不能new这个抽象类 只能靠子类去实现它:约束
//2.抽象类中可以写普通方法
//3.抽象方法必须在抽象类中
//抽象的抽象:约束
//存在的意思 抽象出来 提高效率
}