当前位置:   article > 正文

Java多态学习中的理解和应用_java cnds

java cnds

一、多态的概念

面向对象时,有三大特征:封装、继承和多态,而多态性就是指同一个操作作用于某一类对象,可以有不同的解释,产生不同的执行结果。

(多态现实意义的理解:现实中也会出现事物的多种形态,比如张三既可以是学生,也可以是人,即出现两种形态。)

二、多态存在的前提:1.要有继承关系   

                                     2.要有方法覆盖      

                                     3.父类引用指向了子类的实例

三、多态的优点

  • 1. 消除类型之间的耦合关系
  • 2. 可扩充性
  • 3. 可替换性
  • 4. 简化性
  • 5. 灵活性
  • 6. 接口性

四、这里主要讲讲多态的转型、重写

转型分为向上转型和向下转型

向上转型:

多态是如何实现向一个方法传入不同的类型得到不同的结果?这里是因为出现了叫上转型,即将子类对象地址赋值给父类引用,void getStudentService(PbStudent student)方法接收了不同的子类对象地址。

例子:

  1. 旧:
  2. //创建vip学生类
  3. zsStudentVip zsStudentVip = new zsStudentVip("101", "张三", "zsteach@163.com", LocalDate.now().plusDays(365));
  4. //创建普通学生类
  5. zsStudentGenaral pbStudentGenaral = new zsStudentGenaral("101", "张三", "zsteach@163.com");
  6. 新:
  7. //创建Vip学生类
  8. zsStudent studentVip = new zsStudentVip("101", "张三", "zsteach@163.com", LocalDate.now().plusDays(365));
  9. //创建普通学生类
  10. zsStudent studentGenaral = new zsStudentGenaral("101", "张三", "zsteach@163.com");

向下转型:

有向上转型自然有向下转型,如果想调用子类特有的方法必须向下转型,如下:

在PbStudentVip类中isValid()方法是它特有的,如果通过父类调用子类特有的方法是编译不通过的,因为父类没有子类特有的方法。

如果要调用子类的方法必须向下转型,即由父类型转为子类型。

例子:

  1. zsStudent studentVip = new zsStudentVip("101", "张三", "zsteach@163.com", LocalDate.now().plusDays(365));
  2. //将studentVip转为zsStudentVip类型
  3. zsStudentVip zsStudentVip = (zsStudentVip) studentVip;
  4. //调用vip学生类特有的方法
  5. zsStudentVip.isValid();

注意:向下转型是非常危险的,要谨慎使用,如果转型的类型不对,它不会立刻报错,而是在调用的时候报错,所以一定要确定类型在进行转型。

简单来说,向上转型就是表示子类是父类的一种,比如学生是人。反过来,向下转型就是在确定向上转型也就是确定学生是人的情况下,反过来验证这个人是学生。

重写和重载:

覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。

重载是指不同的函bai数使用相同的函数名,但是函数的参du数个数或类型不同。调用的zhi时候根据函数的参数来区别不同的函数。

这里我主要要讲的是重写,重写是为了增强类的重用性和复用性,扩展性;重写是对类中方法的扩充,因为继承用的是父类的东西,重写则不仅得到父类的东西,同时也加入了自己的东西提高代码灵活性,容易修改。

子类继承了父类,子类的行为大多和父类相似,但子类具有他自己方式,这就是重写的意义。

所以在更多情况下,重写也要比重载更加适用。(如果想要知道具体情况可以在cnds上自己查询)

五、总结

多态包含了很多,更实在Java中有着很大的作用,由于我的学习还不够深入,我也只能在浅显的以及我多少懂了一点的方面进行一定的描述,其中的应用更是少的可怜,如有更多需要,各位可以自行查阅其他文章。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/790152
推荐阅读
相关标签
  

闽ICP备14008679号