我可以在派生类中声明相同的变量名,而另一个在超类中声明为静态变量吗?在派生类中声明相同的变量名,而在超类中声明相同的变量名作为静态变量
class A
{
static int x;
A(int a)
{
x=a;
}
}
class B extends A
{
int x;
B(int b)
{
x=b;
}
}
我可以在派生类中声明相同的变量名,而另一个在超类中声明为静态变量吗?在派生类中声明相同的变量名,而在超类中声明相同的变量名作为静态变量
class A
{
static int x;
A(int a)
{
x=a;
}
}
class B extends A
{
int x;
B(int b)
{
x=b;
}
}
你可以在C#中做到这一点。我不知道Java。如果您从类A成员引用x,它将访问静态变量。如果您从B类成员引用x,它将访问实例变量。
你也可以在Java中做到这一点。如果您从B类成员引用x,它将访问实例变量。
Main.java:21: error: constructor A in class A cannot be applied to given types;
B(int b) {
^
required: int
found: no arguments
reason: actual and formal argument lists differ in length
这是因为您使用的是参数的构造函数,并且超类的参数的构造函数还没有叫:
但是,如下你写的代码将使编译错误。你可以看到这个here。为了防止这种情况,请致电super(x)
以初始化构造函数内的超类成员。
这是哪种语言? –
java或c#两者 – user2695786