在我遇到的几乎所有代码示例中,从 JFrame
派生的类中方法 setDefaultCloseOperation
的参数是一些常量,例如 JFrame.EXIT_ON_CLOSE .
在这种情况下,由于EXIT_ON_CLOSE
是JFrame
的常量,所以可以直接访问它,不需要getter方法来访问它。为什么我们仍然在它前面加上父类(super class)名称 JFrame
?任何 Swing 类都是 JFrame
的子类,并且会继承 EXIT_ON_CLOSE
常量,所以为什么不直接将方法调用写成 setDefaultCloseOperation(EXIT_ON_CLOSE)
而不是 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
?
显式父类(super class)名真的有必要吗?
最佳答案
EXIT_ON_CLOSE
是 JFrame 类的静态成员,这意味着它在 JFrame 类的所有实例中都是相同的。
为什么要指定类?
因为如果您在子类中有一个 EXIT_ON_CLOSE
变量怎么办?将改用该变量。因此,要获得静态变量的正确 int 值(在本例中),您必须说明该变量是在哪个类中定义的。
这类似于您在为类的实例寻址类变量时说 this.variable
的原因。在这里,我们只是说类名 JFrame
而不是 this
因为变量在所有实例中都是相同的。
关于java - 为什么是 JFrame.EXIT_ON_CLOSE 与 EXIT_ON_CLOSE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30581175/