class GFG {
public static void main (String[] args) {
    GFG g=new GFG();
    g.pri();

}

void pri(){    
  mod();
}
void mod()
{
    System.out.println("HHI");
}

}

В этом следующем коде, когда я вызываю метод mod () внутри нестатического метода без создания экземпляра класса для метода mod (), он работает и выдает Output «Hi»; Согласно определению нестатический метод не может быть вызван без экземпляра класса;

Как это работает?

0
Amit 29 Май 2019 в 21:19

2 ответа

Лучший ответ

У него есть экземпляр, который вы создали в main, который вы использовали при выполнении g.pri(). В методе экземпляра, таком как pri, экземпляр, к которому он был вызван, доступен как this, а this. является необязательным. В методе экземпляра эти два оператора делают точно одно и то же:

mod();
this.mod();

Если вы не включите this., компилятор Java добавит его для вас.

(Исходя из мнения , я предлагаю вам включить его, как минимум, для полей, поскольку в коде x = y + 1 вы не знаете, x y - локальные данные в методе или полях в экземпляре.)

1
2 revs 29 Май 2019 в 18:38
class GFG {
    public static void main (String[] args) {
        GFG g=new GFG();
        g.pri();
    }
}

Это работает, потому что вы вызываете нестатический метод pri () экземпляра GFC.

class GFG {
    public static void main (String[] args) {
        pri();
    }
}

Потерпит неудачу, потому что вы вызываете нестатический pri () из static main ()

0
Bor Laze 29 Май 2019 в 19:45