JAVA学习笔记-对于多态性的理解

在学校学习java时老师就跟我们讲过java的三大特性:封装、继承、多态性

但是当初只是为了应付考试,只记住有这么些特性,但是具体是什么并没有太在意,最近重新温习一遍java,对于这三者有了自己的一些理解(所谓理解,也只不过是理解了书上的意思)。

打个比方,鸡鸭鹅都属于家禽,那我写一个叫做“家禽”的类,在里面写了家禽的基本特征。然后我又写了三个类:“鸡、鸭、鹅”,三者都具备父类家禽的基本特征,那我再定义子类时在类名后加上"extends 家禽",这样就继承了父类“家禽”,这就是基础的继承概念。

接着,鸡、鸭、鹅三个类都继承的父类“家禽”的特性(方法),但是他们各有不同,不是同一个物种,所以在他们这个子类下,有自己的特性(方法),在实例化时,我们需要调用父类中的某些方法,此时,因为在父类中我们已经定义过这些特性(方法),那我直接调用父类方法即可,并不需要重新把这些方法重新再写一次,减少了重复代码。换成相对严肃的语言描述就是,父类对于方法已经进行了封装,继承过父类的子类可以直接调用。

关于多态性,我们继续使用家禽做例子,假如“鸡”这个子类在某个特性(我们称为方法A)上,不是很符合父类“家禽”中方法A的定义,有自己不同点,这时就需要对于方法A进行重写,而“鸭”、“鹅”也是如此,于是,我们现在总总共共出现了4种叫做A的方法。这就是多态性,当然,为了不混淆每个A方法,在调用时为了说明我们使用的是哪个A方法,那么在A方法前需要加上定义或重写它的类名。如:鸡.A()。

对于封装、继承、多态性,我的理解大概就是这样,可能有些偏差,如果有大佬看到了,麻烦提出。对了,我还有一个问题一直没弄懂,既然多态性的存在,那假如重写的方法多了,那会不会造成在编写中混淆(比如记不住哪个类中重写的方法具体是什么)造成代码的混淆及后期debug、维护的困难呢,那现实工作中大家都是如何处理这样的问题呢?期待大佬的解答。

你可能感兴趣的:(JAVA学习笔记)