java 类的封装性、继承性、多态性

最近在学习类的三大特性:

封装性、继承性、多态性

了解了他们三大特点各自的用处:

封装(保护数据)
继承(代码复用)
多态性(Java只允许单继承,派生类与基类间有IS-A的关系(即“猫”is a “动物”)。这样做虽然保证了继承关系的简单明了,但是势必在功能上有很大的限制,多态性的引入用来弥补这点的不足)

记录下看了一些博客之后一些总结:

在真正的类的代码中,我么经常看到这样的语句:

Animal animal = new Cat(); 这就是用父类的引用指向子类的对象

这样的优点是什么呢?

有人说这是面向接口编程,可以降低程序的耦合性,即调用者不必关心调用的是哪个对象,只需要针对接口编程就可以了,被调用者对于调用者是完全透明的。让你更关注父类能做什么,而不去关心子类是具体怎么做的,你可以随时替换一个子类,也就是随时替换一个具体实现,而不用修改其他.这样正是多态的好处

多态的核心在于向上转型,保持参数一致(父类的引用) 开发时都是使用向上转型, 所以使用的都是父类的引用 如此对象的传递即可以传递父类的对象,也可以传递子类对象,最终的结果因传递的对象不同,结果就不同,但是参数始终是一样的,完全符合类的多态性。
多态性的构成 :重写、重载、动态链接
重写(override)和重载(overloading)都是建立在继承基础上的的,并且都是对方法的操作。

重写方法:

a.@override 注 super()调用父类的构造 ;单纯的super代表父类的对象 类似this
b.子类存在与父类一模一样的方法,那么这样的方法就是重写方法
c.子类对象执行这个重写方法时,只执行此重写方法,不会执行从父类继承过来的同名方法,也就是重写方法覆盖从父类继承过来的方法
d.子类的权限 不能小于父类的权限 当父类的该方法是private权限 而子类重写的方法是public 子类的权限小于父类的权限 编译器就会报错

重载方法:

重载方法主要满足以下两个条件之一:参数的个数不同或者参数的类型不同

动态链接:

在使用了父类引用指向子类对象之后 对象的调用就要遵循动态链接 即: 定义一个父类类型的引用指向一个子类的对象既可以使用子类强大的功能,又可以抽取父类的共性。 所以,父类类型的引用可以调用父类中定义的所有属性和方法,而对于子类中定义而父类中没有的方法,父类引用是无法调用的;

那什么是动态链接呢?当父类中的一个方法只有在父类中定义而在子类中没有重写的情况下,才可以被父类类型的引用调用; 对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法,这就是动态连接。

你可能感兴趣的:(java 类的封装性、继承性、多态性)