动态多态性指的是在子类和父类的类体中均定义了基本相同声明的非静态成员方法。所谓非静态成员方法指的是在成员方法定义中成员方法的声明不含方法修饰词static。这时也称为子类的成员方法对其父类基本相同声明的成员方法的覆盖(override)。
class J_Employee1
{
public int m_workyear;//工作的年限
public J_Employee1()
{
m_workyear=1;
} //J_Employee构造方法结束
public void mb_printInfo()
{
System.out.println("该职工的工作年限为"+m_workyear);
}//方法mb_printInfo结束
}//类J_Employee结束
public class J_Teacher3 extends J_Employee1 {
public int m_classHour;//
public J_Teacher3()
{
m_classHour=96;
}//J_Teacher构造方法结束
public void mb_printInfo()
{
System.out.println("该教师的工作年限"+m_workyear);
System.out.println("该教师的授课的课时为"+m_classHour);
}//方法mb_printInfo结束
public static void main(String args[])
{
J_Employee1 a=new J_Employee1();
a.mb_printInfo();
a=new J_Teacher3();
a.mb_printInfo();
}//方法main结束
}//类J_Teacher结束
静态多态性指的是程序在编译时,系统就能决定调用哪个函数,如重载。
动态多态性指在运行中才能动态确定操作指针所指的对象,主要通过虚函数和重写来实现。
java 的多态机制遵循一个原则:当父类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法