Java靜態繫結和動態繫結
阿新 • • 發佈:2018-12-07
Java靜態繫結和動態繫結
將方法呼叫連線到方法體稱為繫結。也就是通過呼叫方法連線到具體的方法體。
Java兩種繫結模式
首先了解一下變數和型別
每個基本變數都會有個型別
int a =1;double b = 1;
這裡變數a的型別是int,b的變數是double型別
每一個變數也會有一個型別
class Dog { public static void main(String args[]) { Dog d1;// Here d1 is a type of Dog } }
d1 的型別是Dog
當方法當編譯時(由編譯器)確定物件的型別時,它被稱為靜態繫結。如果在類中有任何private,final或static方法,則有靜態繫結。
靜態繫結
能由編譯器確定物件的型別時,它被稱為靜態繫結。如果在類中有任何private,final或static方法,則有靜態繫結,因為他們都不能被重寫。不存在多型。
class Dog { private void eat() { System.out.println("dog is eating..."); } public static void main(String args[]) { Dog d1 = new Dog(); d1.eat(); } }
動態繫結
當在執行時確定物件的型別時,它被稱為動態繫結。存在多型。
class Animal { void eat() { System.out.println("animal is eating..."); } } class Dog extends Animal { void eat() { System.out.println("dog is eating..."); } public static void main(String args[]) { Animal a = new Dog(); a.eat(); } }
dog is eating...
這個由虛擬機器執行時,動態選擇執行的方法稱為動態繫結。而編譯器不能決定。