20

在下面的 java 代码中,创建了一个 JButton,但同时它的一个方法被覆盖。Qestion:在创建对象时是否有以这种方式覆盖的名称?

编码:

   JButton myButton;
   myButton = new JButton ("ok"){

        @Override
        public void setText(String text) {
            super.setText(text +", delete");
        }

jbutton 的标签现在是“ok, delete”

4

1 回答 1

25

那是一个匿名类。简而言之,来自Java

匿名类是没有名称的本地类。使用 new 运算符在单个简洁表达式中定义和实例化匿名类。本地类定义是 Java 代码块中的语句,而匿名类定义是表达式,这意味着它可以作为更大表达式的一部分包含在内,例如方法调用。当本地类只使用一次时,考虑使用匿名类语法,将类的定义和使用放在完全相同的位置。

这是一种提供基类特化的常用方法,而无需通过class表达式显式定义新类。

于 2009-10-01T14:22:58.307 回答