封装
封装就是隐藏对象的属性和实现细节,对外提供公共访问方式,这样可以让使用者只能通过程序员规定的方法来访问数据,还可以方便的加入存取控制语句,限制不合理操作。
- 良好的封装可以减少耦合
- 类内部的结构可以自由修改
- 可以对成员进行更精确的控制
- 隐藏信息,实现细节
控制修饰符 | private | (default) | protected | public |
---|---|---|---|---|
同一类中 | 此场景可以访问 | 此场景可以访问 | 此场景可以访问 | 此场景可以访问 |
同一包中 | 此场景可以访问 | 此场景可以访问 | 此场景可以访问 | |
子类 | 此场景可以访问 | 此场景可以访问 | ||
全局范围 | 此场景可以访问 |
继承
继承是指从已有类中诞生出新类的方法,该方法通过extends关键字来实现。子类具有父类的非private的特征与行为,还具有自身独有的特点,二者是is-a的关系。在Java中,只支持单继承,所有的类都直接或者间接的继承了Object类,即Object类是所有Java类的祖先,在定义类时,没有使用关键字,则该类直接继承自Object类。
- 不可以使用protected和private修饰符
- 子类不可以选择性继承父类
- 使用super()可以在子类构造函数中调用父类的构造函数;super.方法名可以直接访问并调用父类中的某个方法;super.变量名和对象名可以直接访问父类中的变量或对象
多态
一个接口,多种方法,多态是指同一操作作用于不同的对象,可以有不同的解释,并产生不同的执行结果。可以理解为:多态是通过指向父类的指针,来调用在不同子类中实现的方法。
- 存在继承关系(继承是多态的基础,没有继承便没有多态)
- 子类重写父类的方法(多态下会调用子类重写的方法)
- 父类引用变量指向子类对象(子类到父类的类型转换被称为向上转型,upcasting),注意,此时父类引用变量无法调用子类特有的方法(父类到子类的强制类型转换被称为向下转型,downcasting)
其中,重载(Overload)与重写(Override)是实现多态的两种主要方式。
- 重载(Overload)是同一个类中存在多个方法的方法名相同,但是参数列表不同(参数的个数、类型、顺序等)的情况,体现了多态
- 重写(Override)是当子类定义了一个方法,其方法名、返回值类型、参数列表与父类中某个方法一样,就说该子类重写(覆盖)了父类的同名方法
参考资料:面向对象编程三大特性
参考资料:Java的三大特性
参考资料:重载&重写