將方法呼叫連線到方法體稱為繫結。
在java中有兩種型別的系結:
下面讓我們來了解範例的型別。
每個變數都有一個型別,它可能是原始的和非原始的。
int data=30;
這裡的資料變數是一個int
型別。
class Dog {
public static void main(String args[]) {
Dog d1;// Here d1 is a type of Dog
}
}
物件是特定的java
類的範例,但它也是其超類的範例。
class Animal {
}
class Dog extends Animal {
public static void main(String args[]) {
Dog d1 = new Dog();
}
}
這裡d1
是Dog
類的一個範例,但它也是Animal
的一個範例。
當編譯時(由編譯器)確定物件的型別時,它被稱為靜態系結。如果在類中有任何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...
在上面的例子中,物件型別不能由編譯器決定,因為Dog
的範例也是Animal
的一個範例。編譯器不知道它的型別,只知道它的基礎類別型。