当前位置: 首页 > 面试题库 >

对象创建语法之间的区别

凌俊名
2023-03-14
问题内容

请说明对象一和对象二的区别:

    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,则请使用type声明它car(就像您对with所做的那样one),因为您是在告诉读者该算法只需要知道onea
car,就不需要知道那是什么车。

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



 类似资料:
  • 问题内容: 比如说我有一个叫做Phone的类。 之间有什么区别? 和 和 我已经搜索过,甚至在Eclipse上尝试过,但无法弄清楚。 问题答案: 只声明一个引用处理程序,该处理程序不会指向任何地方(它是未初始化的,除非您为其分配了某些内容,否则无法使用[感谢@Anthony])。 声明一个引用处理程序,该处理程序指向一个新创建的对象(用初始化)。 创建一个新对象,但是由于没有引用存储在任何地方,因

  • 问题内容: 创建新对象和依赖项注入有什么区别?请详细说明。 问题答案: 好吧,创建一个新对象就可以做到的很明确-您可以创建所需类的新实例。 依赖注入是一种在需要时为您提供引用的机制。想象一下一个代表数据库连接池的类- 您通常只有一个该类的实例。现在,您需要将该引用分发给使用它的所有类。依赖注入在这里很方便- 通过使用像Spring这样的DI框架,您可以定义将一个池实例注入到需要它的类中。 您的问题

  • 问题内容: 面向对象的编程语言和基于对象的编程语言之间有什么区别?JavaScript是面向对象还是基于对象? 问题答案: 维基百科说: 在计算机科学中,基于对象一词具有两种不同的含义: 某种程度上受限的面向对象编程,其中应用了以下一项或多项限制:(a)没有隐式继承,(b)没有多态性,(c)仅可用值的非常少的子集是对象(通常是GUI组件)。 基于原型的系统(即基于“原型”对象的系统,这些对象不是任

  • 问题内容: 我想知道两者之间的核心区别是什么 面向对象和基于对象的语言 我读过很多文章,所有人都说两件事 面向对象的语言支持OOP的所有功能,而基于对象的语言不支持OOP的所有功能,例如多态和继承。 他们给出了javascript作为基于对象和java作为面向对象的示例 像这个stackoverflow的帖子 面向对象和基于对象的语言之间的区别 但是我想知道这两种概念之间的核心区别是什么,而与任何

  • 问题内容: 您能否简单地解释一下Transfer对象和Domain对象之间的区别?如果您可以举一个Java示例,那就太好了。 问题答案: DTO没有任何逻辑。他们只有字段(州)。在将数据从一个层/子系统传输到另一层/子系统时使用它们 域对象可以具有逻辑(取决于您使用的是域驱动设计还是贫乏的数据模型),并且它们通常与数据库结构相关。 如果使用贫乏的数据模型(即您的域对象没有任何逻辑),则DTO和域对

  • 本文向大家介绍使用对象文字和构造函数创建的对象之间的主要区别是什么?,包括了使用对象文字和构造函数创建的对象之间的主要区别是什么?的使用技巧和注意事项,需要的朋友参考一下 使用对象文字创建的对象是单例对象,这意味着当对对象进行更改时,它将影响整个脚本。而如果使用构造函数创建对象并对其进行更改,则该更改不会影响整个脚本中的对象。  让我们单独讨论它们。 1)使用对象文字创建的对象 由于这些是单例,因