在创建引用变量时,我们到底在做什么?

时间:2016-02-29 11:16:24

标签: java class variables types constructor

Noob,有一些关于Java基本知识的问题。

如果我们有一个带有构造函数(也是Person)的类Person,我们可以像这样创建一个引用变量:

Person johnny = new Person();

我们说我们刚刚在课程People中创建了一个对象johnny。 它拥有一个"地址"保留对象及其值的位置,与基元类型的对象不同(例如,int x = 5;值为5,johnny是"链接"到值 - 如果我&# 39;正确理解事物。)

第一个字: Person是一个类/类型(< - 在这里编辑),但是:

  • 班级/类型做什么?它需要什么?也许:一个类型做什么,如果它不是原始类型'?

第二个字: johnny是Person类型的引用变量。 - 如果我遗失了什么,请赐教:)

第三个字: new这只是说明我们正在创建新对象。

第四个字:第二个Person

  • 这是我们正在创建的对象吗?
  • 这是我们所指的构造函数或类吗?

ALSO:

  • 变量所指的值(地址)是等号后的所有内容吗?地址是new Person

最后:多态性。 因此,如果我们有一个子类Adult,它扩展了超类Person,那么我们可以这样做:

Person amanda = new Adult();
  • 我们现在在做什么?
  • 班级类型为amanda是什么,并引用班级Adult中的对象?

感谢您的帮助:)

2 个答案:

答案 0 :(得分:-1)

  

第一个字:'人物'是类类型

是的,但它可能也是一种原始类型,对此并不重要"第一个字"这是变量的类型声明。

另一个例子是

 int a = 1;    

在Java中声明变量或参数时,名称前面带有类型。

  

第二个字:' johnny'是Person类型的引用变量

那是对的。您在此处命名变量johnny。它的类型就是你在名字前面指定的类型。

  

第三个字:' new'这只是表明我们正在创建新对象。

new表示我们正在调用一个构造函数(跟随new的类)。这确实是你用Java创建对象的方式。

  

第四个字:第二个'人

这是您正在调用构造函数的类的名称。这将始终返回该类(不是子类)的新实例。对于给定的类,可以有多个构造函数可供选择,它们由参数计数和类型区分(在您的情况下,是一个没有任何参数的构造函数)。

  

变量引用的值(地址)是等号后的所有内容吗?地址是“新人”?

new Person()返回对新创建的对象实例的引用。它将存储在您的变量johnny

  

最后:多态性。

您的Adult类是Person的子类。这意味着您可以在需要Person的所有情况下使用它。特别是,您可以将其分配给Person - 类型变量(例如johnny)并在其上调用所有Person方法。

答案 1 :(得分:-1)

对于单词来说,这太混乱了。

  

创建引用类型时,我们到底在做什么?

无。 Java中没有这样的操作。

  

当我们有一个类(或超类,我会回到那个)具有构造函数(也是Person)的人时,我们可以创建这样的引用类型:

不,你不能。你在这里创建的是一个引用。创建一个类型,更不用说引用类型'。

Person johnny = new Person();
  

我们刚刚在一个新类中创建了People(例如)一个对象johnny。

我没有看到班级People的证据,但我会接受你的话。

  

它拥有一个"地址"保留对象及其值的位置,与基元类型的对象不同(例如,int x = 5;值为5,johnny是"链接"值 - 如果我已经理解了事情正确。)

正确。

1st word: 'Person' is a class type, but:

不,不是。 Person是一个班级。周期。

  

班级类型有什么作用?它需要什么?

没有,因为它不存在。另一方面,是一种用于构造对象的模板,用于确定其数据成员以及可以在其上调用的代码。

  

也许:一个类型做什么,如果它不是原始类型'?

它通过继承,接口实现和Liskov替换原则(q.v.)以可以推理和计算的方式将类型系统扩展到原始类型之外。

  

第二个字:' johnny'是Person类型的引用变量。 - 如果我遗失了什么,请赐教:)

正确。

  

第三个字:' new'这只是表明我们正在创建新对象。

正确。

第四个字:第二个Person:这是我们正在创建的对象吗?

这是我们正在创建的对象的(或'类型'如果你坚持的话)。

  

这是我们所指的构造函数或类吗?

两者。它们的参数或缺乏决定了哪个构造函数被调用。根据Java的规则,构造函数的名称与类的名称相同。

  

变量引用的值(地址)是等号后的所有内容吗?地址是“新人”?

变量指的是创建的对象。没有'地址'的概念。在Java。

  

最后:多态性。因此,如果我们有一个子类' Adult',它扩展了超级班级的人员,那么我们可以这样做:

Person amanda = new Adult();
  

我们现在在做什么?

您正在创建类型为Adult的对象,并通过Person类型的引用引用它,只有Person是基类或由Adult

  

' amanda'类类型人物

'阿曼达'是类型/类Person的引用。

  

和班级中的一个对象'成人'?

amanda根本不是一个对象。它引用的对象是类Adult的对象。