美文网首页
java中多态

java中多态

作者: surrealtire | 来源:发表于2020-01-09 23:12 被阅读0次

    点个关注不迷路~~

    多态是java面向对象思想极为重要的一部分,在学到java多态时,感觉学的特别迷,遂参考了java核心技术卷1,但里面介绍关于多态的内容很少,于是又看了一本java编程思想第四版(中文和英文),结合自己实践,把自己的理解总结如下:

    多态:我的理解就是对一个对象来说,可以属于不同的类。多态允许方法(函数)调用一种类型,什么样的类型呢——和其他类型既有区别又有联系的类,只要他们具有继承关系。当然这种说法并不准确。

    1.调用方法和成员变量

    父类如下

    两个子类如下

    狗类

    猫类

    使用一个test类来打印结果

    显然,我们发现,对于类中的方法,打印的结果都是子类的,但对于成员变量而言,打印的结果不同,多态调用打印的变量是父类的。

    如果我们调用子类中独有的但父类没有的方法和变量尝试打印。显然,eclipse报错了,因为多态的前提是继承和重写;

    父类不变,子类如下

    其中红色箭头所指的是父类中没有,但子类有的变量和方法。

    Test类如下

    即无法调用。

    2.向上转型

    编写一个以父类为参数列表的类型的函数,并用该函数调用子类对象,操作如下;

    依然是方法看子类,成员变量看父类。但为什么以父类为参数的函数可以调用子类,因为子类是特殊的父类。函数在调用子类时,子类向上转型成为了父类类型,这样做的好处是,不必给每个子类都去编写各自的函数,提高了效率。

    3.向下转型

    向上转型是自然而然进行的,不需要额外的操作,但向下转型,即由父类转向子类,需要强制转换。即加一个小括号,如下图红色方框所示。

    相关文章

      网友评论

          本文标题:java中多态

          本文链接:https://www.haomeiwen.com/subject/yziuactx.html