多态从实现的角度分为:静态多态和动态多态
静态多态也叫做编译时多态
动态多态也叫做运行时多态
1.静态的多态:
函数重载是静态的多态的一种实现形式:
举例说明:
class MethodOverloading {
viod receive(int i) {
System.out.println("Received one int data");
System.out.println("i="+i);
}
viod receive(float f) {
System.out.println("Received one float data");
System.out.println("f="+f);
}
viod receive(String s) {
System.out.println("Received a String");
System.out.println("s="+s);
}
}
<pre>
方法重载是在编译时就已经确定的,所以属于静态多态
2.动态的多态:
举例说明
例一:
public class A{
public void fun1(){
System.out.println("I'm A");
}
}
public class B extends A{
public void fun1(){
System.out.println("I'm A");
}
}
public Test{
public static void main(String[]args){
A a1 = new A();
A a2 = new B();
a1.fun1();
a2.fun1()
}
}
输出:I'm A
I'm B
例二:
public interface A{
public void fun1(){}
}
public class B implements A{
public void fun1(){
System.out.println("I'm B");
}
}
public class B implements A{
public void fun1(){
System.out.println("I'm C");
}
}
public Test{
public static void main(String[]args){
A a1 = new B();
A a2 = new C();
a1.fun1();
a2.fun1()
}
}
输出:I'm B
I'm C