java中的多态理解
2016-06-12 14:47
453 查看
首先举一个例子,这个世界上有很多的动物,比如猫、狗、猪,这些都是动物,类似这个,其实就是一个简单的多态的概念
接下来看一段代码:
package com.ProgrammerC.test;
class Animal{
public void voice(){
System.out.println("Animal's voice");
}
}
class Cat extends Animal{
public void voice(){
System.out.println("miao");
}
}
class Dog extends Animal{
public void voice(){
System.out.println("wang");
}
}
class Pig extends Animal{
public void voice(){
System.out.println("heng");
}
}
public class test {
public static void testVoice(Animal t){
t.voice();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Animal a1 = new Cat();
Animal a2 = new Dog();
Animal a3 = new Pig();
testVoice(a1);
testVoice(a2);
testVoice(a3);
Cat c2 = (Cat)a1;
c2.voice();
}
}
在上述代码中,Dog,Cat,Pig分别继承了Animal类,并重写了父类的Voice方法,在main函数中Animal类分别向下继承cat,dog,pig,并且调用testvoice方法,结果是执行子类中的方法,编译时的类型是Animal,而执行时分别执行的是不同的子类,因此实现了多态。上述是一个简单的多态的例子。
所以总结一下,多态实现一般有以下过程:
1. 继承
2.重写
3.父类引用指向子类对象
接下来看一段代码:
package com.ProgrammerC.test;
class Animal{
public void voice(){
System.out.println("Animal's voice");
}
}
class Cat extends Animal{
public void voice(){
System.out.println("miao");
}
}
class Dog extends Animal{
public void voice(){
System.out.println("wang");
}
}
class Pig extends Animal{
public void voice(){
System.out.println("heng");
}
}
public class test {
public static void testVoice(Animal t){
t.voice();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Animal a1 = new Cat();
Animal a2 = new Dog();
Animal a3 = new Pig();
testVoice(a1);
testVoice(a2);
testVoice(a3);
Cat c2 = (Cat)a1;
c2.voice();
}
}
在上述代码中,Dog,Cat,Pig分别继承了Animal类,并重写了父类的Voice方法,在main函数中Animal类分别向下继承cat,dog,pig,并且调用testvoice方法,结果是执行子类中的方法,编译时的类型是Animal,而执行时分别执行的是不同的子类,因此实现了多态。上述是一个简单的多态的例子。
所以总结一下,多态实现一般有以下过程:
1. 继承
2.重写
3.父类引用指向子类对象
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树