我可以在派生类中声明一个相同的变量名,而另一个在超类中是静态变量吗?
class A
{
static int x;
A(int a)
{
x=a;
}
}
class B extends A
{
int x;
B(int b)
{
x=b;
}
}
答案 0 :(得分:0)
您可以在C#中执行此操作。我不了解Java。如果从类A成员引用x,它将访问静态变量。如果从类B成员引用x,它将访问实例变量。
答案 1 :(得分:0)
您也可以在Java中执行此操作。如果从类B成员引用x,它将访问实例变量。
但是,您编写的代码会产生如下编译错误:
super(x)
这是因为您使用的是参数化构造函数,并且尚未调用超类的参数化构造函数。你可以看到这个here。要防止这种情况,请调用s_put_char
初始化构造函数内的超类成员。