在派生类中声明相同的变量名,而在超类中声明为静态变量

时间:2015-09-03 09:48:15

标签: oop inheritance

我可以在派生类中声明一个相同的变量名,而另一个在超类中是静态变量吗?

class A
{
    static int x;   
   A(int a)
   {
     x=a; 
   }   
}
class B extends A
{
   int x;
   B(int b)
  {
    x=b;
   }
}

2 个答案:

答案 0 :(得分:0)

您可以在C#中执行此操作。我不了解Java。如果从类A成员引用x,它将访问静态变量。如果从类B成员引用x,它将访问实例变量。

答案 1 :(得分:0)

您也可以在Java中执行此操作。如果从类B成员引用x,它将访问实例变量。

但是,您编写的代码会产生如下编译错误:

super(x)

这是因为您使用的是参数化构造函数,并且尚未调用超类的参数化构造函数。你可以看到这个here。要防止这种情况,请调用s_put_char初始化构造函数内的超类成员。