我不认为C#.net和C ++中存在这种OOP模式。那么这个模式或特征的名称是什么。我在编程Android时遇到过这种情况,这也是Java的一个特性吗?注意:我知道@Override仅适用于android编译器/ ide。
Foo bar = new Foo(){
@Override
public void fighters(){
//some stuff
}
};
这是Lambda的事吗?
谢谢!
答案 0 :(得分:2)
这是Java中inner class的示例。这是一个匿名的内部类,其中
匿名类是一个根本没有名称的内部类。并且其实例在创建时创建。
阅读Anonymous Classes documentation了解更多详情。而Override是Java注释(不是特定于Android)。阅读When do you use Java's @Override annotation and why?
考虑以下示例
让我们声明一个接口HelloWorld
,如下所示。
interface HelloWorld {
public void greet();
public void greetSomeone(String someone);
}
你想写一个扩展HelloWorld
class TestClass implements HelloWorld {
String name = "world";
@Override
public void greet() {
greetSomeone("world");
}
@Override
public void greetSomeone(String someone) {
name = someone;
System.out.println("Hello " + name);
}
}
并将其实例化为
TestClass testClass = new TestClass();
这里代替上面两个步骤(声明一个类并实例化它),你可以声明一个匿名内部类,比如
HelloWorld testClass = new HelloWorld() {
String name = "world";
@Override
public void greet() {
greetSomeone("world");
}
@Override
public void greetSomeone(String someone) {
name = someone;
System.out.println("Hello " + name);
}
};
此处testClass
是匿名内部类的对象,它实现HelloWorld
。