为什么JFrame.EXIT_ON_CLOSE vs EXIT_ON_CLOSE?

the*_*sor 2 java methods swing

在我遇到的几乎所有代码示例中,setDefaultCloseOperation派生类中的方法的参数JFrame是一些常量,例如,JFrame.EXIT_ON_CLOSE.在这种情况下,因为EXIT_ON_CLOSE是常量JFrame,它可以直接访问,并且不需要getter方法来访问它.为什么我们仍然用超类名称作为前缀JFrame?任何Swing类都是子类JFrame,并且会继承EXIT_ON_CLOSE常量,那么为什么不写出方法调用setDefaultCloseOperation(EXIT_ON_CLOSE) 而不是setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

真正需要显式超类名吗?

Ava*_*l13 5

EXIT_ON_CLOSE 是JFrame类的静态成员,这意味着它在JFrame类的所有实例中都是相同的.

为什么要指定课程?

因为如果EXIT_ON_CLOSE在子类中有变量怎么办?将使用该变量.因此,要获取静态变量的正确int值(在本例中),必须说明定义变量的类.

它类似于this.variable在为类的实例寻址类变量时所说的原因.在这里,我们只是说类名JFrame而不是this因为变量在所有实例中都是相同的.