使变量成为类的实例

时间:2011-04-22 10:02:09

标签: c# java

我正在进行一级计算,我想知道是否有人可以告诉我这个的定义。如果我有一个带有方法等的类,那么我创建另一个类,我在那里生成第一个类的变量。实际上这叫什么? 这是我之后显示的变量定义“whatisThis”这是一个类对象吗?

MyClass1
{
  ...
}

MyClass2
{
   MyClass1 whatisThis = new MyClass1();
}

4 个答案:

答案 0 :(得分:2)

这是一个初始化为新实例的实例字段; MyClass1封装将是我的描述。如果您重新公开两种类型共有的接口,那么它可能是 decoration

当然,没有方法,私人领域不能做很多事情; p

所以澄清一下:

  • whatisThisprivate
  • 类型的字段(MyClass1和每个实例,在本例中)
  • new MyClass1()MyClass1
  • 类型的新对象
  • 然后在构造期间将对新对象的引用分配给whatisThis;字段初始值设定项(使用此赋值的名称)通常在 之前发生任何自定义构造函数被调用

答案 1 :(得分:1)

这就是它的样子 - 一个成员变量,另外它直接初始化。它与int等原始类型没有任何不同。您可以随意使用MyClass2

答案 2 :(得分:1)

在结构:

class ClassName
{

  //... class/object level member variables can be here (also called fields)

  void MethodName()
  {
    //... method level variables can be here (also called local variables)
  }

  //... class/object level member variables can be here (also called fields)

}
  • 成员变量对象级别?

    • 班级变量使用 static 修饰符
    • 对象级变量请勿使用 static 修饰符

因此,在MyClass2类的定义中,您有一个名为whatisThis且类型为MyClass1的对象级成员变量。 (它是对象级变量,因为没有static关键字)


现在来定义变量本身。我们将这个定义分为3部分:

MyClass1 whatisThis = new MyClass1();
  1. MyClass1 whatisThis
    • 这是变量定义
    • 变量的类型为 MyClass1 ,这是类型名称,与 int 中的 int i; 相同/强>
    • 变量的名称为 whatisThis ,这是变量名称,与 i中的 int i; 相同
  2. =
    • 这是赋值运算符
    • 将对象的引用分配给变量whatisThis
  3. new MyClass1()
    • 这是对象的实例化
    • 对象的类型为 MyClass1
    • 对象没有名称,它只在堆内存中有地址

  4. 另外,让我们定义,内存中发生了什么,行执行时(仅当 MyClass2 实例化时才执行此行):

    1. MyClass1 whatisThis
      • 在堆
      • 中的MyClass2实例中创建空引用
    2. =
      • 引用已填充,其中包含 MyClass1 类型对象的地址
    3. new MyClass1()
      • 类型 MyClass1 的对象在
      • 中实例化

    4. 所以最终的答案是:

      在课程MyClass2中,您定义whatisThis类型的对象级变量MyClass1 ,并且初始化引用在堆上实例化的类型MyClass1的对象实例。

答案 3 :(得分:0)

What is this actually called?

您正在使用运算符MyClass1声明new的新对象(为对象分配内存)

"whatisThis" is this a class object?