我如何知道对象中存在哪些变量?

时间:2015-01-12 16:00:32

标签: java eclipse variables inheritance extends

我得到了这段代码:

//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。

但我不确定我的第二个答案。他们对变量的确切含义是什么?我的回答是否正确?

3 个答案:

答案 0 :(得分:1)

我会说:

  

对象 y 有一个名为 n 的嵌套成员,以及来自其超类的派生成员,名为 m

答案 1 :(得分:0)

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

  

它们对变量的准确含义是什么?

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

  

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

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

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

  4.   
  5. 局部变量类似于对象如何在字段中存储其状态,方法通常会将其临时状态存储在局部变量中。声明局部变量的语法类似于声明字段(例如,int count = 0;)。没有特殊的关键字将变量指定为本地变量;该决定完全来自声明变量的位置 - 它位于方法的开始和结束括号之间。因此,局部变量只对声明它们的方法可见;他们无法从班上其他人那里获得。

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

  8.   

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

答案 2 :(得分:0)

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