Как я понял из теории по Java
public - свойства и методы, которые могут быть вызваны экземпляром класса
static - свойства и методы, которые могут быть вызваны непосредственно классом
public static - методы могут быть вызваны, как экземпляром, так и самим классом
а значение свойств становятся общими для всех экземпляров класса и привязаны к свойству класса
Почему в данном случае я могу обратиться к статическому свойству через экземпляр?
Мне казалось здесь должно быть
public int num;
или
public static int num;
, чтобы этот код работал корректно
Просто зачем тогда
public static
, если просто
static
отработает по такой же логике
public class MyClass {
public static void main(String args[]) {
Java java = new Java(5);
System.out.println(java.num);
}
}
class Java {
static int num;
Java(int i) {
num = i;
}
}