java中多态的作用,多态的好处,以及为什么要用多态?
看了这个,我终于知道了为什么要用多态了
看了大量的资料和视频之后,我终于搞清了多态的作用了,废话不多说,直接上干货!
多态的好处:
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中多态的作用,多态的好处,以及为什么要用多态?相关推荐
- java中的静态变量的作用域_详解JAVA中static的作用
1.深度总结 引用一位网友的话,说的非常好,如果别人问你static的作用:如果你说静态修饰 类的属性 和 类的方法 别人认为你是合格的:如果是说 可以构成 静态代码块,那别人认为你还可以: 如果你说 ...
- Java中static的作用
Java中static的作用 请先看下面这段程序: public class Hello{ public static void main(String[] args){ //(1) System.o ...
- Java中接口的作用,为什么要写接口?
** Java中接口的作用 转载于:https://www.zhihu.com/question/20111251 ** **困惑:**例如我定义了一个接口,但是我在继承这个接口的类中还要写接口的实现 ...
- Java中重载的作用?
Java中重载的作用? 重载定义:一个类中如果有多个同名方法但带有不同的参数列表,称为方法重载(Overload). 重载方法的参数列表不同是指参数的数据类型或个数或次序不同. 重载方法之间必须以参数 ...
- java中*和**的作用 以及 /和/*和/**的区别
一.java中*和**的作用 "*"就表示了所有的文件,但是"*"并不包括子目录下的文件: "**"匹配包含任意级子目录中所有的文件: 二. ...
- 记录一下Java中final的作用
记录一下Java中final的作用 final关键字可以修饰类.成员变量.方法.以及方法中的局部变量. 1.final修饰类 可以使用final将类声明为final类.final类不能被继承, ...
- java中包装类的作用
Java中包装类的作用 一.包装类是什么 包装类就是解决java的八种基本数据类型不面向对象的缺陷,而设计出来的一个个与每一个与基本类型相对应的类,这八种基本数据类型对应的类统称包装类(Wrapper ...
- java中execution的作用_一文初步了解Java虚拟机
大家都知道,Java中JVM的重要性,学习了JVM你对Java的运行机制.编译过程和如何对Java程序进行调优相信都会有一个很好的认知. 什么是JVM? JVM(Java Virtual Machin ...
- java 中gui的作用_java学习中最应该注意的Java GUI用户界面以何为基础
java中的GUI编程(Graphic User Interface,图形用户接口),是在它的笼统窗(Abstract Window Toolkit,AWT)上完成的,java.awt是AWT的东西类 ...
- java中key的作用_key word ‘final’ 在java 中作用
随着硬件的发展,一般的芯片不会用于裸跑,像android things 这样的系统会越来越多,在嵌入式中c++/java的应用将会越来越多.而且我感觉嵌入式工程师掌握android app的基本开发是 ...
最新文章
- kafka streams_如何使用Kafka Streams实施更改数据捕获
- windows服务程序设置为自动 重启后又变为手动启动_系统小技巧:解决Windows无法正常关机的问题...
- 爬虫的系统框架组成-资源库
- 铁路运货的运费与路程远近java_JAVA铁路运货的运费与路程远近及货物的重 – 手机爱问...
- Java并发编程71道面试题及答案 1
- CentOS 5.3 下快速安装配置 PPTP ××× 服务器
- JavaScript要点 (二) 使用误区
- mmap 和 shm 区别
- 计算机学院许斌副院长,马鞍山职业技术学院院长姚国成、马鞍山市卫校校长许斌一行来访我院...
- React+Redux仿Web追书神器
- SAP Fiori INTEROP tile cache
- 网站pc端分享QQ好友,空间,微博
- MySQL重安装,安装到最后出现Er1045的解决方法
- Hibernate使用的一些细节注意事项
- Arcpy 去除shp文件ZM值代码及工具箱
- Gephi教程——外观和布局
- 3位格雷码的顺序编码_格雷码编码规则_格雷码有什么规律
- directxsdk 下载地址
- 常用DOS命令参数的中文详解3
- 计算机上的无线网络开关怎么打开,联想笔记本无线网络开关怎么打开