理解这个 Java 程序的执行流程
Understanding execution flow of this Java programme
初学Java谁能给我解释一下下面代码的执行流程?我对输出很困惑。
这是代码:
public class MainClass {
public static void main(String[] args) {
car c = new car();
vehicle v = c;
/* I am unable to understand what's happening while printing the values using the objects of the different classes*/
System.out.println("|" + v.getModelName()
+ "|" + c.getModelName()
+ "|" + v.getRegNo() + "|" + c.getRegNo() + "|");
}
}
class vehicle {
public static String getModelName() {
return "Volvo";
}
public long getRegNo() {
return 12345;
}
}
class car extends vehicle {
public static String getModelName() {
return "Toyota";
}
@Override
public long getRegNo() {
return 54321;
}
}
对象创建
- 您正在创建汽车实例 ( new car())
- 向变量 c 添加新对象指针
- 将变量 c 的内容复制到变量 vehicle(指向 car 对象)
方法调用流程
当您在对象上调用静态函数时,它不会应用继承规则,因此在调用 v.getModelName() Java 虚拟机调用方法时 class 车辆。
但是,当您使用 class 的车辆指针(v 变量)getRegNo 方法调用 car() 对象时,车辆将调用,并且当您使用 [=33 的汽车指针(c 变量)getRegNo 方法时=] 车辆会呼叫。
编辑建议表评论:
这种叫做“多态”的能力:here你可以找到很好的教程。 “多态”绝对是与“继承”、“封装”同等重要的概念
初学Java谁能给我解释一下下面代码的执行流程?我对输出很困惑。
这是代码:
public class MainClass {
public static void main(String[] args) {
car c = new car();
vehicle v = c;
/* I am unable to understand what's happening while printing the values using the objects of the different classes*/
System.out.println("|" + v.getModelName()
+ "|" + c.getModelName()
+ "|" + v.getRegNo() + "|" + c.getRegNo() + "|");
}
}
class vehicle {
public static String getModelName() {
return "Volvo";
}
public long getRegNo() {
return 12345;
}
}
class car extends vehicle {
public static String getModelName() {
return "Toyota";
}
@Override
public long getRegNo() {
return 54321;
}
}
对象创建
- 您正在创建汽车实例 ( new car())
- 向变量 c 添加新对象指针
- 将变量 c 的内容复制到变量 vehicle(指向 car 对象)
方法调用流程
当您在对象上调用静态函数时,它不会应用继承规则,因此在调用 v.getModelName() Java 虚拟机调用方法时 class 车辆。
但是,当您使用 class 的车辆指针(v 变量)getRegNo 方法调用 car() 对象时,车辆将调用,并且当您使用 [=33 的汽车指针(c 变量)getRegNo 方法时=] 车辆会呼叫。
编辑建议表评论:
这种叫做“多态”的能力:here你可以找到很好的教程。 “多态”绝对是与“继承”、“封装”同等重要的概念