【问题标题】:How do I know which variables exist in an object?我如何知道对象中存在哪些变量?
【发布时间】:2015-01-12 16:00:31
【问题描述】:

我得到了这个代码:

//Class X is created, and then class Y is derived from class X:
class X
  {
  protected int m;
  }


class Y extends X
{
  private int n;
  public Y (int m, int n)
    {
     this.m = m;
     this.n = n;
    }
  public String toString ()
    {
     return m + ", " + n;
    }
}

//Class Y is used in the following way:
class UseY
{
  public static void main (String[] args)
  {
    Y y = new Y (3, 4);
    System.out.println (y);
  }
}

如您所见,代码涉及继承。

有人问我:

执行程序 UseY 时会创建哪个输出?对象 y 中存在哪些变量?

我的回答:

输出是: 3,4。 对象 y 中的变量是 m 和 n。

但我不确定我的第二个答案。 变量到底是什么意思?我的回答正确吗?

【问题讨论】:

    标签: java eclipse variables inheritance extends


    【解决方案1】:

    我会说:

    对象 y 有一个嵌套成员,称为 n 和一个从其超类派生的成员,称为 m

    【讨论】:

      【解决方案2】:

      Y 类型的对象 y 包含两个变量;一个 int "m" 和一个 int "n" 输出:3、4

      【讨论】:

        【解决方案3】:

        你对第一个问题的回答是正确的。

        变量到底是什么意思?

        这个tutorial page解释了变量的确切含义。

        Java 编程语言定义了以下几种变量:

        1. 实例变量(非静态字段) 从技术上讲,对象将其各自的状态存储在“非静态字段”中,即不使用 static 关键字声明的字段。非静态字段也称为实例变量,因为它们的值对于类的每个实例(换句话说,对于每个对象)都是唯一的;一辆自行车的 currentSpeed 与另一辆自行车的 currentSpeed 无关。

        2. 类变量(静态字段) 类变量是使用 static 修饰符声明的任何字段;这告诉编译器存在这个变量的一个副本,不管这个类被实例化了多少次。定义特定类型自行车的齿轮数量的字段可以标记为静态,因为从概念上讲,相同数量的齿轮将应用于所有实例。代码 static int numGears = 6;会创建这样一个静态字段。此外,可以添加关键字final,表示齿轮的数量永远不会改变。

        3. 局部变量 类似于对象在字段中存储其状态的方式,方法通常会将其临时状态存储在局部变量中。声明局部变量的语法类似于声明字段(例如,int count = 0;)。没有特殊关键字将变量指定为局部变量;该决定完全来自声明变量的位置——位于方法的左大括号和右大括号之间。因此,局部变量仅对声明它们的方法可见;其他班级无法访问它们。

        4. 参数 您已经在 Bicycle 类和“Hello World!”的主方法中看到了参数示例。应用。回想一下 main 方法的签名是 public static void main(String[] args)。在这里,args 变量是该方法的参数。要记住的重要一点是,参数总是被归类为“变量”而不是“字段”。这也适用于您将在本教程后面了解的其他参数接受构造(例如构造函数和异常处理程序)。

        在这种情况下,存在的变量是实例字段nm(上面的类型1)。 Y 类型的对象在其类中已经定义了 n。由于它扩展了X,它也继承了类成员字段m。子类继承其父类的所有 publicprotected 成员。因此,Y 类型对象中存在的变量是成员mn

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-06-04
          • 2021-01-09
          • 1970-01-01
          • 2013-07-01
          • 1970-01-01
          • 2013-01-30
          • 1970-01-01
          相关资源
          最近更新 更多