在面向对象设计中多态描述的是同一结构在执行时会根据不同的形式展现出不同的效果,在Java中多态性可以分为两种不同的展现形式:
- 方法的多态性(同样的方法有不同的实现)
- 对象的多态性(父类与子类实例之间的转换处理)
1、方法的多态性之:方法重载【同一个方法可以根据传入的参数的类型活个数的不同,实现不同的功能】例子:
package com.mydemo;
public class MessageDemo {
public static void main(String args[]) {
new Message().print();
new Message().print("带参数的方法");
}
}
class Message {
/**
* 方法重载
*/
public void print() {
System.out.println("方法重载的小demo");
}
/**
* @param msg
*/
public void print(String msg) {
System.out.println(msg);
}
}
运行结果:
方法重载的小demo
带参数的方法
2、方法的多态性之:方法覆写【同一个方法可能根据实现子类的不同而有不同的实现】例子:
package com.mydemo;
public class MessageDemo {
public static void main(String args[]) {
new Message().print();
new DatabaseMessage().print();
new NetworkMessage().print();
}
}
class Message {
/**
* 方法覆写
*/
public void print() {
System.out.println("【父类】------方法覆写的小demo");
}
}
class DatabaseMessage extends Message {
/**
* 方法覆写
*/
public void print(){
System.out.println("【子类-DatabaseMessage】------方法覆写的小demo");
}
}
class NetworkMessage extends Message {
/**
* 方法覆写
*/
public void print(){
System.out.println("【子类-NetworkMessage】------方法覆写的小demo");
}
}
运行结果:
【父类】------方法覆写的小demo
【子类-DatabaseMessage】------方法覆写的小demo
【子类-NetworkMessage】------方法覆写的小demo
总结:
方法重载多态性的意义在于一个方法名称有不同的实现;
方法覆写多态性的实现在于,父类的一个方法,不同的子类有不同的实现。