静态多态行其实就是函数的重载,在一个类中完成
eg:
class Test
{
public int getValue(int x,int y)
{
return x+y;
}
public int getValue(int x,int y,int z)
{
return x+y+z;
}
public double getValue(double x,double y)
{
return x+y;
}
}
而动态多态性可以理解为方法的重写,必须是在有继承关系的两个或两个以上的类中完成
class A
{
public void show(){}
}
class B extends A
{
public void get(){}
}
class Test
{
public static void main(String... args)
{
A a = new B();//创建一个父类的引用指向子类的对象,针对你的问题在编译的时候能确定是调用父类的方法,如果是子类的方法会编译失败的,而要调用子类的类型就必须向下转型
a.show();
//a.get();//就会编译失败,因为这是子类B特有的方法,要调用子类特有的方法必须就将a转化成B类型
(B)a.get();
}
} |