Приведенный ниже код дает ошибку (Cannot make a static reference to the non-static method setVisible(boolean) from the type Window
):методы, присутствующие в классе Рама, которая простирается JFrame, не может быть использовано в главной()
import javax.swing.JFrame;
public class Frame extends JFrame{
public static void main(String[] args) {
setVisible(true);
}
}
В то время как этот компилируется нормально:
import javax.swing.JFrame;
public class Frame extends JFrame{
Frame() {
setVisible(true);
}
}
Когда я говорю Frame extends JFrame
, это означает, что Frame наследует все методы из JFrame (свободно говоря), включая setVisible(boolean)
. Так почему я не могу вызвать setVisible(true)
в main()
, а я могу сделать это другими способами?
'static' означает, что существует один экземпляр метода, независимо от того, существуют ли какие-либо объекты этого класса. Вы не можете вызвать метод, который не является статичным, если метод, из которого вы вызываете, является статическим, особенно если нет инициализированного объекта. – frieder