java的多态-简单理解
来源:互联网 发布:淘宝上的大拿韩代 编辑:程序博客网 时间:2024/06/05 17:58
关于Java的多态我感觉我不是老师只是个lazy的学生,也讲不清楚,我也不用那些高大上的术语了,以下例子是我打过的程序,粘贴过来说一下我的理解
假如学校开一个晚会,给每个表演者发门卡,进出会场刷卡时会显示他的身份
在此为了简化我们只区分dancer和singer
按照常规我们先分别写出这两个类
Dancer.java
packagefour;
public class Dancer {
public void show2(){
System.out.println("we are dancers");
}
}
Singer.java
packagefour;
public class Singer {
public void show1(){
System.out.println("we aresingers");
};
}
再写一个测试类
packagefour;
public class TestMain {
public static void main(String[]args) {
Singer p1=newSinger();
Dancer p2=newDancer();
p1.show1();
p2.show2();
}
}
测试的结果为
虽然这样可以辨别singer和dancer的身份,但是我们注意到Singer和Dancer类中分别有不一样的show方法,假设有100种不一样的身份也就是要写到show100,显然这样方法太多,会显得麻烦 ,这时候多态就有用了,只需要一个show方法即可。
下面是应用多态改的程序
package three;
public interface People {
void show();
}
package three;
public class Dancerimplements People {
public void show() {
System.out.println("we are dancers");
}
}
package three;
public class Singerimplements People {
public void show() {
System.out.println("we are singers");
}
}
package three;
importjava.util.WeakHashMap;
public class TestMain {
public static void main(String[]args) {
People p1=new Dancer();
People p2=new Singer();
p1.show();
p2.show();
}
}
我们可以看到singer和dancer辨别身份时用的是相同的show方法,这个时候show方法会根据对象类的不同而提示不一样的内容,非常方便,简化的程序
符合多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。
当然从这个例子我们也可以发现多态的三个特征,要有继承,要有重写,要有父类应用指向子类对象
1 Dancer类和Singer类都是People累的继承
2对show方法都进行了重写
3 People p1=new Dancer();
People p2=new Singer();
注意不是Dancer p1=new Dancer();
都有父类应用指向子类对象
总结一下多态的好处
1.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
2.可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
3.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。
4.可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
- java多态的简单理解
- java的多态-简单理解
- 多态的简单理解
- 对JAVA简单的理解
- Java String 的简单理解
- java反射的简单理解
- JAVA clone的简单理解
- Java中回调的简单理解
- java的foreach简单理解
- 【Java】Java中webservice的简单理解
- 关于Java的容器的简单理解
- java中关于static的简单理解
- JAVA 执行顺序的简单理解
- 关于回调的简单理解(java)
- Java之线程安全的简单理解
- Java中synchronized关键字的简单理解
- 关于java泛型的简单理解
- Java线程池ThreadPoolExecutor的简单理解
- Codeforces Round #335 (Div. 2)-C Sorting Railway Cars(最长上升子序列)
- Hdu 4035 Maze 树上概率DP
- Nginx编译安装
- 网络犯罪溯源分享·
- JDBC 使用说明
- java的多态-简单理解
- 简单了解python装饰器
- mysql 系统错误5
- 【python小练】图片爬虫之BeautifulSoup4--转自博客园
- iOS 简单粗暴的浅谈类与对象
- 输出所有的水仙花数。
- KNN-Dating完整代码
- 数值精度问题
- Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等