我是学习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;
}
}
答案 0 :(得分:3)
当您在对象上调用静态函数时,它将不会应用继承规则,因此在类车辆中调用v.getModelName()Java虚拟机调用方法。
但是当你用汽车指针(v变量)调用car()对象时,类车辆的getRegNo方法会调用,当你使用汽车指针(c变量)时,类车辆的getRegNo方法也会调用。
这种称为" Polymorphism":here的能力你可以找到很好的教程。 "多态性"绝对是一个重要的概念,如继承"和"封装'。