我在类中有静态变量和方法。它们是否会在派生类中继承?
例如:
class A
{
public static int x;
public static void m1()
{
some code
}
}
class B:A
{
B b=new B();
b.m1(); // will it be correct or not, or will I have to write
// new public voim1(); or public void m1();
b.x=20; // will it be correct or not?
}
答案 0 :(得分:3)
静态成员可用,但您无法在实例上引用它们。相反,使用类型引用。
E.g。
class B:A
{
public void Foo()
{
A.m1();
A.x=20;
}
}
答案 1 :(得分:3)
静态成员将在派生类中可用,但您无法使用实例引用访问它们。您可以直接访问它们:
m1();
x = 20;
或使用班级名称:
A.m1();
A.x = 20;
答案 2 :(得分:2)
静态成员可用,但您无法在实例上引用它们。因此,您必须使用超类的类前缀。 A.m1()
。
这与使用实例引用访问静态方法和字段的Java语言形成鲜明对比。
答案 3 :(得分:1)
静态成员与实例无关,因为它是Class变量或Class方法,您可以使用类名访问它。它通常用于保留一般类信息,例如创建的实例数等等。