Доступны ли статические методы и переменные в производных классах? - PullRequest
1 голос
/ 01 ноября 2010

У меня есть статические переменные и методы в классе.Будут ли они наследоваться в производных классах или нет?

Например:

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?
}

Ответы [ 4 ]

3 голосов
/ 01 ноября 2010

Статические члены будут доступны в производном классе, но вы не можете получить к ним доступ, используя ссылку на экземпляр. Либо вы обращаетесь к ним напрямую:

m1();
x = 20;

или используя имя класса:

A.m1();
A.x = 20;
3 голосов
/ 01 ноября 2010

Статические члены будут доступны, но вы не сможете ссылаться на них в экземпляре. Вместо этого используйте ссылку типа.

* 1003 Е.Г. *

class B:A
{
    public void Foo()
    {
        A.m1();
        A.x=20;
    }
}
2 голосов
/ 01 ноября 2010

Статические члены доступны, но вы не сможете ссылаться на них в экземпляре.Следовательно, вы должны использовать префикс класса суперкласса.A.m1().

Это прямо противоположно языку Java, где вы можете получить доступ к статическим методам и полям, используя ссылки на экземпляры.

1 голос
/ 01 ноября 2010

Статический член не связан с экземпляром, поскольку его переменная Class или метод Class, вы можете получить к нему доступ, используя имя класса. Обычно используется для хранения общей информации о классе, например, количества созданных экземпляров и т. Д.

...