一、绑定
将一个方法与其所属的类/对象关联叫做方法的绑定,分为动态绑定和静态绑定。
二、静态绑定
编译的时候进行的绑定。final, static, private修饰的方法是静态绑定。
三、动态绑定
在程序运行过程中,根据具体的实例对象才能确定关联的是哪个方法。动态绑定是java实现多态性的基础。下面是一个动态绑定的例子。
class Father { // 父类
static void speak()
{
System.out.println("Father"); // 父类的静态方法
}
void eat() // 父类的eat方法
{
System.out.println("Father eat");
}
}
class Son extends Father{ // 子类继承父类
static void speak()
{
System.out.println("Son"); // 子类重新定义静态方法speak,使父类的静态方法隐藏
}
void eat()
{
System.out.println("Son eat"); // 子类override父类的eat方法
}
void drink()
{
System.out.println("Son drink"); // 子类独有的方法
}
}
public class Run {
public static void main(String args[])
{
Father ft = new Son();
// ft.drink(); // 编译不通过
ft.eat();
Father Ft = new Father();
Ft.eat();
Son.speak();
}
}
运行结果
Son eat
Father eat
Son