gpt4 book ai didi

java - 对象创建语法的区别

转载 作者:行者123 更新时间:2023-12-01 23:15:31 25 4
gpt4 key购买 nike

请解释对象一和对象二之间的区别:

    car one = new opel();    
opel two = new opel();

欧宝系列扩展了汽车系列。

最佳答案

您可以将 one 重新分配给 car 的其他子类的对象:

one = new Ford(...);

但是您不能像这样重新分配two,因为它仅限于opel

如果 m 是在 opel 类中定义的方法,而不是在 car 类中定义的方法,那么编译器将给出一个错误,如果你这样做:

one.m();

但这没关系:

two.m();

因为它知道 two 被限制为 opel,所以它知道方法 m 将存在。

通常,您希望将变量声明为可能的最广泛类型。也就是说,如果您只想使用 car 中的方法,则使用 car 类型声明它(就像您对 one 所做的那样),因为你告诉读者算法只需要知道one是一辆汽车,它不需要知道它是什么类型的汽车。

更多:有必要了解变量同时具有编译时类型运行时类型。编译器将 one 视为 car,因为它不知道该变量在任何给定时间将是哪种 car。但两者的运行时类型都是opel。如果您有一个为 car 定义的方法 mm,然后为 opel 重写,则 one.mm()two.mm() 都会调用相同方法。一旦编译器查看编译时类型并确定调用合法,那么程序运行时调用哪一个取决于运行时类型。

关于java - 对象创建语法的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21270862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com