Я прочитал много блогов, руководств и т. Д., Но я ничего не понимаю о динамической привязке в java. Когда я создаю объект под названием «myspecialcar», он создает объект из класса «автомобиль» как тип транспортного средства класса в качестве динамической привязки, верно? Итак, java знает, что когда я выполняю метод myspecialcar.getType(), у меня есть объект автомобиля, и он выполняет метод из класса car. Но почему я получил тип от автомобиля класса? Это потому, что переменная из класса транспортного средства (тип) является статической привязкой?
С уважением,
Код:
public class vehicle {
String type = "vehicle";
public String getType(){
return type;
}
}
public class car extends vehicle {
String type = "car";
public String getType(){
return type;
}
}
public class test {
public static void main (String[] args){
vehicle myvehicle = new vehicle(); // static binding
car mycar = new car(); // static binding
vehicle myspecialcar = new car(); //dynamic binding
System.out.println(myspecialcar.getType());
System.out.println(myspecialcar.type);
System.out.println(myspecialcar.getClass());
}
}
Выход:
car
vehicle
class car