看了这个,我终于知道了为什么要用多态了

看了大量的资料和视频之后,我终于搞清了多态的作用了,废话不多说,直接上干货!

多态的好处:

1.提高了代码的可维护性

2.提高了代码的扩展性

多态的作用:

可以当做形式参数,可以接受任意子类对象

多态的弊端:

不能使用子类特有的属性和行为

案例演示:

父类与子类:

class Animal{

public void eat(){

System.out.println("动物吃饭");

}

}

class Cat extends Animal{

public void eat(){

System.out.println("猫吃鱼");

}

public void CatchMouse(){

System.out.println("猫抓老鼠");

}

}

class Dog extends Animal{

public void eat(){

System.out.println("狗吃骨头");

}

}

主类:

//加入现在需要创建三个猫对象和三个狗对象并使用eat方法,如果我们按照正常的思路:

class Demo_Animal{

public static void main(String[] args) {

Cat c1=new Cat();

Cat c2=new Cat();

Cat c3=new Cat();

Dog d1=new Dog();

Dog d2=new Dog();

Dog d3=new Dog();

c1.eat();

c2.eat();

c3.eat();

d1.eat();

d2.eat();

d3.eat();

}

}

//显然这样写代码冗余,我们可以先优化一下创建对象和调用方法的过程,把创建对象和调用方法的过程提取成为一个方法

class Demo_Animal{

public static void main(String[] args) {

method(Cat c1);

method(Cat c2);

method(Cat c3);

method(Dog d1);

method(Dog d2);

method(Dog d3);

}

public static void method(Cat c){

c.eat();

}

public static void method(Dog d){

d.eat();

}

}

//这个时候,如果有十个,百个类,猫,狗,猪,牛,羊........我们每次都需要写一个对应的method,这样是不现实的,因

//此我们需要进一步优化,使用多态,把父类当做形参

class Demo_Animal{

public static void main(String[] args) {

method(Cat c1);

method(Cat c2);

method(Cat c3);

method(Dog d1);

method(Dog d2);

method(Dog d3);

public static void method(Animal a){

a.eat();

}

从这个案例中我们可以明显的感受到多态的优点,我所使用的父类作为形参的方法也是在工作时最为常用的一种方式,以上是我花了大功夫总结的多态,希望对看到的你有所帮助!

java中多态的作用,多态的好处,以及为什么要用多态?相关推荐

  1. java中的静态变量的作用域_详解JAVA中static的作用

    1.深度总结 引用一位网友的话,说的非常好,如果别人问你static的作用:如果你说静态修饰 类的属性 和 类的方法 别人认为你是合格的:如果是说 可以构成 静态代码块,那别人认为你还可以: 如果你说 ...

  2. Java中static的作用

    Java中static的作用 请先看下面这段程序: public class Hello{ public static void main(String[] args){ //(1) System.o ...

  3. Java中接口的作用,为什么要写接口?

    ** Java中接口的作用 转载于:https://www.zhihu.com/question/20111251 ** **困惑:**例如我定义了一个接口,但是我在继承这个接口的类中还要写接口的实现 ...

  4. Java中重载的作用?

    Java中重载的作用? 重载定义:一个类中如果有多个同名方法但带有不同的参数列表,称为方法重载(Overload). 重载方法的参数列表不同是指参数的数据类型或个数或次序不同. 重载方法之间必须以参数 ...

  5. java中*和**的作用 以及 /和/*和/**的区别

    一.java中*和**的作用 "*"就表示了所有的文件,但是"*"并不包括子目录下的文件: "**"匹配包含任意级子目录中所有的文件: 二. ...

  6. 记录一下Java中final的作用

    记录一下Java中final的作用   final关键字可以修饰类.成员变量.方法.以及方法中的局部变量. 1.final修饰类   可以使用final将类声明为final类.final类不能被继承, ...

  7. java中包装类的作用

    Java中包装类的作用 一.包装类是什么 包装类就是解决java的八种基本数据类型不面向对象的缺陷,而设计出来的一个个与每一个与基本类型相对应的类,这八种基本数据类型对应的类统称包装类(Wrapper ...

  8. java中execution的作用_一文初步了解Java虚拟机

    大家都知道,Java中JVM的重要性,学习了JVM你对Java的运行机制.编译过程和如何对Java程序进行调优相信都会有一个很好的认知. 什么是JVM? JVM(Java Virtual Machin ...

  9. java 中gui的作用_java学习中最应该注意的Java GUI用户界面以何为基础

    java中的GUI编程(Graphic User Interface,图形用户接口),是在它的笼统窗(Abstract Window Toolkit,AWT)上完成的,java.awt是AWT的东西类 ...

  10. java中key的作用_key word ‘final’ 在java 中作用

    随着硬件的发展,一般的芯片不会用于裸跑,像android things 这样的系统会越来越多,在嵌入式中c++/java的应用将会越来越多.而且我感觉嵌入式工程师掌握android app的基本开发是 ...

最新文章

  1. kafka streams_如何使用Kafka Streams实施更改数据捕获
  2. windows服务程序设置为自动 重启后又变为手动启动_系统小技巧:解决Windows无法正常关机的问题...
  3. 爬虫的系统框架组成-资源库
  4. 铁路运货的运费与路程远近java_JAVA铁路运货的运费与路程远近及货物的重 – 手机爱问...
  5. Java并发编程71道面试题及答案 1
  6. CentOS 5.3 下快速安装配置 PPTP ××× 服务器
  7. JavaScript要点 (二) 使用误区
  8. mmap 和 shm 区别
  9. 计算机学院许斌副院长,马鞍山职业技术学院院长姚国成、马鞍山市卫校校长许斌一行来访我院...
  10. React+Redux仿Web追书神器
  11. SAP Fiori INTEROP tile cache
  12. 网站pc端分享QQ好友,空间,微博
  13. MySQL重安装,安装到最后出现Er1045的解决方法
  14. Hibernate使用的一些细节注意事项
  15. Arcpy 去除shp文件ZM值代码及工具箱
  16. Gephi教程——外观和布局
  17. 3位格雷码的顺序编码_格雷码编码规则_格雷码有什么规律
  18. directxsdk 下载地址
  19. 常用DOS命令参数的中文详解3
  20. 计算机上的无线网络开关怎么打开,联想笔记本无线网络开关怎么打开

热门文章

  1. Redis详解及使用
  2. 读书笔记(二十三):代码整洁
  3. 光纤收发器的选择与维护!
  4. 单片机执行指令过程详解
  5. 【PAT乙级】1009 说反话
  6. Java——时间复杂度、空间复杂度详解
  7. 长安链ChainMaker的多链隔离设计
  8. YOLOX升级 | 阿里巴巴提出YOLOX-PAI,1ms内精度无敌!
  9. JN516x串口测试
  10. Nacos 常见问题及解决方法