📕封装
把从对象抽象出来的数据【全局变量】和对数据的操作【方法】封装在一起,数据被保护在其内部,程序隐藏实现细节。例如各种排序算法的封装,你不需要知道算法如何实现,只需要在意算法的时间复杂度和空间复杂度对你的程序的影响,还有线程锁对数据的保护机制,你需要知道数据如何被保护吗?其实并不需要。
如何实现封装?
- 全局变量私有化
你可以通过set
和get
方法来操作数据,这样我们可以很好地保证数据的合理性以及可靠性。 - 提供实现业务流程或单个流程实现的方法
我们可以将一个具体的业务流程或单个流程实现方式封装在一个方法里面,这样可以保证不用写重复性的业务流程,也保证流程的准确性。
📕继承
子类继承父类的特征(全局变量)和行为(成员方法),使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
我是把它理解为一个类对另一个类的扩展,你可以在子类去重写父类,但是整体来说父类私有化的全局变量和成员方法子类是没有的或无法被继承的,因此说成是扩展就显得不准确。
- 父类内容被子类继承受到访问权限修饰符的限制。
- 子类对父类进行重写是不受访问权限修饰符的限制。
- 如果子类构造器没有使用
super()
,那么super
会自动去调用父类的无参构造器;如果子类构造器使用了super()
,那么super
会根据参数去调用父类相应的构造器;如果父类有多个构造器,需要在子类用super()
指明使用父类哪个构造器。
super
是对父类对象的引用 - 子类只能继承一个父类,满足 is-a 的逻辑关系
- 构造器里面
this()
的优先级高于super()
的优先级。
this | super | 区别 |
---|---|---|
本类没有去父类找 | 父类的属性 | 属性 |
本类没有去父类找 | 父类的方法 | 成员方法 |
本类没有去父类找 | 父类的构造器 | 构造器 |
子类 | 父类 |
📕多态
不同引用类型的类或接口继承统一的接口或类,那么这个类和接口拥有多态性,一般抽象abstract
类和接口interface
具有多态性。
多态的体现不仅是对象,也可以是方法、形参和数组。
- 向上转型
Object o = new String();
- 向下转型
String s = (String) o;
💡动态绑定机制
- 当调用对象属性时,没有动态绑定机制,哪里声明那里使用。
- 当调用对象方法的时候,方法会和对象的内存地址/运行类型绑定。
个人认为就是作用域的问题
➕补充
instanceOf
用于判断它左边的对象是否是它右边的类的实例(兼容性)。
如果你是无意刷到这篇文章并看到这里,希望你给我的文章来一个赞赞👍👍。如果你不同意其中的内容或有什么问题都可以在下方评论区留下你的想法或疑惑,谢谢你的支持!!😀😀