匿名类如何使用“扩展”或“实现”?

一个匿名类如何扩展一个超类或实现一个接口?

匿名类必须像任何其他Java类一样扩展或实现某些东西,即使它只是java.lang.Object

例如:

 Runnable r = new Runnable() { public void run() { ... } }; 

这里, r是实现Runnable的匿名类的对象。

匿名类可以使用相同的语法扩展另一个类:

 SomeClass x = new SomeClass() { ... }; 

你不能做的是实现多个接口。 你需要一个命名的类来做到这一点。 然而,无论是匿名内部类还是命名类都不能扩展多个类。

一个匿名类通常实现一个接口:

 new Runnable() { // implements Runnable! public void run() {} } JFrame.addWindowListener( new WindowAdapter() { // extends class } ); 

如果你的意思是你是否可以实现2个或更多的接口,比我认为这是不可能的。 然后您可以制作一个私人界面,将两者结合在一起。 虽然我不能想象为什么你想要一个匿名的class级有这样的:

  public class MyClass { private interface MyInterface extends Runnable, WindowListener { } Runnable r = new MyInterface() { // your anonymous class which implements 2 interaces } } 

匿名类总是扩展超类或实现接口。 例如:

 button.addActionListener(new ActionListener(){ // ActionListener is an interface public void actionPerformed(ActionEvent e){ } }); 

而且,虽然匿名类不能实现多个接口,但是可以创build一个扩展其他接口的接口,让匿名类来实现它。

 // The interface interface Blah { void something(); } ... // Something that expects an object implementing that interface void chewOnIt(Blah b) { b.something(); } ... // Let's provide an object of an anonymous class chewOnIt( new Blah() { @Override void something() { System.out.println("Anonymous something!"); } } ); 

匿名类正在扩展或实现创build其对象例如:

 Interface in = new InterFace() { .............. } 

这里匿名类正在实现接口。

 Class cl = new Class(){ ................. } 

这里匿名类正在扩展一个抽象类。