將方法調(diào)用連接到方法體稱為綁定。
在java中有兩種類型的綁定:
下面讓我們來了解實(shí)例的類型。
每個(gè)變量都有一個(gè)類型,它可能是原始的和非原始的。
int data=30;
這里的數(shù)據(jù)變量是一個(gè)int
類型。
class Dog {
public static void main(String args[]) {
Dog d1;// Here d1 is a type of Dog
}
}
對象是特定的java
類的實(shí)例,但它也是其超類的實(shí)例。
class Animal {
}
class Dog extends Animal {
public static void main(String args[]) {
Dog d1 = new Dog();
}
}
這里d1
是Dog
類的一個(gè)實(shí)例,但它也是Animal
的一個(gè)實(shí)例。
當(dāng)編譯時(shí)(由編譯器)確定對象的類型時(shí),它被稱為靜態(tài)綁定。如果在類中有任何private
,final
或static
方法,則有靜態(tài)綁定。
靜態(tài)綁定的示例
class Dog {
private void eat() {
System.out.println("dog is eating...");
}
public static void main(String args[]) {
Dog d1 = new Dog();
d1.eat();
}
}
當(dāng)在運(yùn)行時(shí)確定對象的類型時(shí),它被稱為動態(tài)綁定。
動態(tài)綁定的示例
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();
}
}
執(zhí)行上面示例代碼輸出結(jié)果如下 -
dog is eating...
在上面的例子中,對象類型不能由編譯器決定,因?yàn)?code>Dog的實(shí)例也是Animal
的一個(gè)實(shí)例。編譯器不知道它的類型,只知道它的基類型。