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

Java基类参考变量

林鹭洋
2023-03-14
问题内容

可以为基类引用变量分配基类对象或派生类对象的地址。

真假?

谁能给我看看这意味着什么的例子?我是Java的新手,正在尝试了解Java的特定语言术语。谢谢。

我认为以下示例就是我编写的代码

public class B extends A {
    A a = new A();
    A ab = new B();
}

class A {

}

我认为,由于两个参考变量都是有效的语法(在Eclipse中),因此答案是正确的。


问题答案:

可以为基类引用变量分配基类对象或派生类对象的地址。

真假?

正确,因为所有派生类对象都是基类的实例,但并非相反。

谁能给我看看这意味着什么的例子?我是Java的新手,正在尝试了解Java的特定语言术语。谢谢。

首先,您需要知道什么是基类和派生类。

基类也称为父类或超类,是被另一个扩展的类。一个简单的例子是Animal class

子类是其父类的扩展。例如,Lion class

我们知道所有的狮子都是动物。但是并不是所有的动物本质上都是狮子。子类只是超类的子集。

因此,当我们有一个基类引用时,可以将派生类对象分配给它。

例:

class Animal{

}

class Lion extends Animal{

}


Animal someAnimal = new Lion(); //because all lions are animals

但是,事实并非如此。因此不可能,并且在Java中是不允许的:

Lion lion = new Animal(); //not allowed in Java.


 类似资料:
  • 问题内容: “重要的是要理解,引用变量的类型(而不是它所引用的对象的类型)决定了可以访问哪些成员。” 那句话你到底是什么意思?这仅限于继承概念吗?JVM如何处理它? 问题答案: 这意味着假设您具有: 的类型的 变量 是,但对象的类型是指是。这是变量类型,它决定了您可以执行的操作-因此您无法调用 编译器仅知道您在上调用方法,其中不包括。同样,重载方法仅针对您所知道的方法进行解析:

  • 下面的@data变量是由 Handlebars 及其内建助手代码实现的。 @root 初始化模版被执行时的上下文。 {{#each array}} {{@root.foo}} {{/each}} 除非特意改变,对于页面渲染时的每一部分,本项的值恒定。因此,当深度参数不能够引用它们的父模版时,本项可以在代码片段内使用 。 @first 本项会被 each 助手代码在迭代的第一步被设置为 true。

  • 特殊变量是由FreeMarker引擎自己定义的变量。要访问它们, 你可以使用 .variable_name 语法。 比如,你不能仅仅写 version,而必须写.version。 Note: 在 FreeMarker 2.3.23 版本中,可以使用驼峰格式的特殊变量名来代替蛇形格式, 比如 dataModel 代替 data_model。 但是需要知道在相同的模板中,FreeMarker 会对模板

  • 问题内容: 我想将转换为。但是这个匿名类我使用关键字。 例如,我写了这个简单的模式: 和带有匿名类的此示例代码(使用this关键字): 但是当我将其转换为lambda表达式时: 我收到此编译错误: 编译错误是: 所以我的问题是:有没有办法引用“ lambda对象” ? 问题答案: 你不能在表达式中引用。的语义已更改为仅在lambda中引用周围类的实例。无法this从lambda内部引用表达式。 问

  • 问题内容: 我们知道对象引用变量包含表示访问对象的方式的位。 它不保存对象本身,而是保存指针或地址之类的东西。 我正在阅读《 Head-First Java(第二版)》一书,在书中(第3章,第54页)中写道: 在Java中,我们实际上并不知道引用变量中的内容。我们确实知道,无论它是什么,它代表一个并且只有一个对象。而且JVM知道如何使用引用来获取对象。– 我想问一下: 对象引用变量是否保存指针,地

  • 问题内容: 我有一个问题。 我认为将int \ Integer作为Integer传递给函数并对该引用进行++应该会更改基础对象,但是在所有情况下输出均为0。这是为什么? 问题答案: 如其他答案所述,Java仅 按值调用 ,而运算符仅影响变量,而不影响对象。如果要模拟 按引用调用 ,则需要传递一个可变对象(如数组)并修改其元素。 Java API为此有一些专门的对象,例如(它还可以在多个线程上工作)