Можно ли вызвать статический метод с использованием объекта? - PullRequest
0 голосов
/ 05 июня 2019

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

class One
{
  static void show()
  {
    System.out.println("one");
  }
}

class Two extends One
{
  static void show()
  {
    System.out.println("Two");
  }
}

public class RuntimePoly
{
  public static void main(String[] args) 
  {
    One o=new Two();
    o.show();
  }
}

Я получаю правильный вывод.

1 Ответ

0 голосов
/ 05 июня 2019

Статический метод все еще является методом.

Из википедии:

Метод объектно-ориентированного программирования (ООП) - это процедура, связанная с сообщением и объектом

Он статичен в том смысле, что фактически не использует объект, с которым он связан, но все еще является «процедурой, связанной с [...] объектом». Статический вызов A.b() также может быть записан ((A) null).b() (в Java), так как экземпляр никогда не используется и показывает немного более явно, где приходит разрешение метода.

...