JButton b = new JButton("test");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
// tasks
}
});
这就是实现了ActionListener接口的匿名类。
java的匿名内部类的语法规则看上去有些古怪,不过如同匿名数组一样,当你只需要创建一个类的对象而且用不上它的名字时,使用内部类可以使代码看上去简洁清楚。它的语法规则是这样的:
new interfacename(){......}; 或 new superclassname(){......};
下面接着前面继续举例子:
public class Goods3 {
public Contents cont(){
return new Contents(){
private int i = 11;
public int value() {
return i;
}
};
}
}
这里方法cont()使用匿名内部类直接返回了一个实现了接口Contents的类的对象,看上去的确十分简洁。
在java的事件处理的匿名适配器中,匿名内部类被大量的使用。例如在想关闭窗口时加上这样一句代码:
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
有一点需要注意的是,匿名内部类由于没有名字,所以它没有构造函数(但是如果这个匿名
内部类继承了一个只含有带参数构造函数的父类,创建它的时候必须带上这些参数,并在实现的过程中使用super关键字调用相应的内容)。如果你想要初始化
它的成员变量,有下面几种方法:
如果是在一个方法的匿名内部类,可以利用这个方法传进你想要的参数,不过记住,这些参数必须被声明为final。
将匿名内部类改造成有名字的局部内部类,这样它就可以拥有构造函数了。
在这个匿名内部类中使用初始化代码块。
相关推荐
不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现。 在Java中,还有Static Nested Class和Inner Class的概念。Static Nested Class意味着创建一个static内部类的对象,不需要一个外部...
成员内部类可以直接使用外部类的所有属性和方法,静态内部类不依赖于外部类,局部内部类的实例化只能在方法中进行,匿名内部类一般用于继承其它类或是实现接口。 Lambda表达式是JDK 1.8后开始的新特性,允许把函数...
44、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类?是否可以implements(实现)interface(接口)? 12 45、内部类可以引用他包含类的成员吗?有没有什么限制? 12 46、java 中实现多态的机制是什么...
不能 extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现。 final 修饰符(关键字)如果一个类被声明为 final,意味着它不能再派生出新的子类,不能作为父类被继承。将变量或方法声明为 ...
Java 面试题含答案 Java 是一种广泛应用的编程语言...28. Anonymous Inner Class (匿名内部类) 是否能够 extends(继承)其它类,是否能够implements(实现)interface(接口)? 答案:可以继承或实现接口,但不能多继承。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 可以继承其他类或完成其他接口,在swing编程中常用此方式。 第三,Static Nested Class ...
28、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 21 29、super.getClass()方法调用 21 30、String是最基本的数据类型吗? 22 31、String s = ...
18.2.Anonymous Inner Class (匿名内部类)是否可以extends(继承)其它类?是否可以 implements(实现)interface(接口)?(等级1级) 19.写出长度为10的队列,使该队列可以支持多线程数据存取(先入先出,队列为空时不能出...
匿名内部类可以继承其他类或实现接口。 - **继承**:匿名内部类可以继承自某个特定的类。例如,如果你想要创建一个继承自`Thread`类的新线程,你可以这样做: ```java new Thread() { public void run() { // ...
匿名内部类不能显式地继承其他类,但可以实现一个或多个接口。 **29. super.getClass()方法调用** `super.getClass()`用于获取当前类的父类的信息。 **30. String是最基本的数据类型吗?** 不是。`String`是对象,...
Java中的静态内部类详解及代码示例 ...典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码操作创建外部类的对象。 在实际开发中,静态内部类可以用于实现Builder模式,提高代码的可读性和可维护性。
Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?** - 可以实现接口。 - 不能继承其他类,因为它已经隐式地继承了外部类。 **29. super.getClass()方法...
28. AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 匿名内部类既可以继承一个类也可以实现多个接口。 29. super.getClass()方法调用。 super.getClass...
AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? - **继承类**:不可以直接继承其他类。 - **实现接口**:可以实现一个或多个接口。 #### 29\. super....
2. Anonymous Inner Class(匿名内部类)是否可以 extends(继承)其他类,是否可以 implements(实现)interface(接口)? Anonymous Inner Class 可以 extends 其他类和 implements 接口,但它不能拥有自己的...