java三大特性
- 封装:encapsulation 隐藏信息
- 实现专业的分工,工作中的分模块 分功能开发
- 隐藏信息和实现细节,使得对代码的修改更加安全和容易
- 继承 :inheritance 延续+扩展父类信息
- 实现代码复用,延续+扩展父类信息
- 多态:polymorphism 模糊测罗 以不变应万变
- 以不变应万变
封装
- 概念
- 把对象的属性和行为结合为一个独立的整体,并尽可能隐藏对象的内部实现细节
- 好处
- 提高代码的复用性和安全性
设计原则
- 把不想外界知道的实现细节隐藏起来,向外提供公共的访问方法
javabean
- 一个对象实例的封装类
- 必须为public class
- 必须有一个无参构造器
- 所有的属性必须private修饰进行封装
- 为属性提供公共的setter和gettet方法
继承
概念
- 在一个现有类的基础上构建一个新的类,子类会自动拥有父类所有可继承的属性和方法
- 继承的格式
- class 子类 extends 父类
- 好处
- 提高代码复用性,提高开发效率
- 类与类之间产生关系,提供了多态的前提
- 注意事项
- 单继承,一个类只能继承一个父类
- 多个子类可以继承同一个父类
- 可以多层继承
- 父子类成员变量
- 子类可以有和父类同名的属性,不会互相影响
- 子类中可以直接访问父类非私有属性
- 若子类中也有同名属性,可用super。属性名来访问父类属性
- 父子类中的方法
- 子类中可以有和父类同名的方法,不会互相影响
- 子类有父类中可非私有的方法
- 调用方法时,会先在子类中找;如果子类没有,会不断向父类找
- 特殊情况:方法的重写
- 方法重写特点:
- 必须保证权限大于等于父类权限
- 方法名称 参数列表以及返回值类型一致,权限可以兼容
- 方法的重写
- 在子类中可以根据需要对从父类继承来的方法进行重写
- 具有相同的方法名称 参数列表和返回值类型
- 属性不会重写
- 静态方法不会重写
- final修饰的类不能继承,修饰的方法不能重写
- 私有方法不会重写
super关键字
- 用来代表父类对象
继承中的构造方法
- 子类构造中必须调用父类的构造器
- 子类可以在这的构造器中用super()调用父类的构造器;用this()代表子类其他构造器
- super()必须写子类构造器的第一行
- 子类构造器中无显示调用父类的构造器,jvm会默认调用父类构造器
子类无显示调用父诶构造器,而父类又没有无参构造器会报错
## 对象转型 ##
一个父类的引用类型变量可以指向子类的对象
一个父类的引用不可以访问其子类对象的新增成员
多态
- 概念
- 父类引用变量可以指向子类对象,父类在调用方法时实际会调用子类重写的方法
- 成员变量是父类的成员变量
- 调用的方法是子类重写后的方法
- 编译看左边,运行看右边
- 多态的好处
- 隐藏子类类型,提高代码的扩展性
坏处
- 只能使用父类已有的功能,无法开拓新功能
多态的条件
- 父子类
- 父类引用指向子类对象
- 方法重写
- 静态绑定
- 在编译器完成,可以提高代码的执行速度
- 静态方法
- 构造器
- private方法
- 用关键字super调用的方法
- 动态绑定
- 在运行期间,根据对象的实际类型调用相应的方法,降低了代码的执行速度
- 相同的父类对象,调用相同的方法,参数也相同,但是实际运行的方法不同。