java面向对象的特征:
- 封装:对隐藏对象的具体实现细节仅对外暴露接口。成员属性私有,提供访问方法。方法和类都可封装。
- public:公开的
- protected:包内有父子关系可访问
- 默认:包内有效
- private:类内有效
- 继承:当一个类继承父类的时候,所有的代码都能被继承,但是有时访问权限不够。有利于重用。父类是final无法被继承。Java单根继承,只能继承一个父类。
继承关系里的继承顺序:父类的构造方法,代码块,静态代码。
重写:优先子类,权限不允许变小,私有和final不能重写。
@override作用:进行编译器检查
向上转型:父类的引用指向子类的对象(会隐藏子类扩展的方法)动态绑定:父类的引用会调用重写方法
抽象类:加abstract可以不写{},抽象类不能new对象:因为有抽象方法;子类继承父类时,如果子类不是抽象类,抽象方法必须重写(阻止一切当时直接调用抽象方法);抽象类有构造方法和成员属性以及get set 方法;抽象类不能加final修饰,抽象方法必须被重写才能用。
接口:是更抽象的抽象类、属性必须是public static final、方法必须是抽象方法public;类实现接口,同一类可实现多个接口,extends在前implement在后。接口没有成员属性。 - 多态:允许不同对象对同一消息做出不同的反应
必要条件:- 必须继承和实现
- 必须重写方法
- 必须用父类引用指向子类对象
- 好处:
- 可替换
- 可扩展
- 消除类型之间的耦合