lot*_*ons 10 java inheritance overriding
我在Java中看到过几个类似的例子,我希望有人可以解释发生了什么.看起来像一个新类可以内联定义,这对我来说似乎很奇怪.第一个打印输出行是预期的,因为它只是toString.然而第二个看起来像函数可以重写内联.这有技术术语吗?或者任何更深入的文档?谢谢!
如果我有以下代码:
public class Apple {
public String toString() {
return "original apple";
}
}
public class Driver {
public static void main(String[] args) {
System.out.println("first: " + new Apple());
System.out.println("second: " +
new Apple() {
public String toString() {
return "modified apple";
}
}
);
}
}
Run Code Online (Sandbox Code Playgroud)
代码输出:
first: original apple
second: modified apple
Run Code Online (Sandbox Code Playgroud)
nic*_*ild 15
这是一个匿名的内部阶级.您可以在Inner Classes的Java文档链接中找到有关它的更多信息.编辑我正在添加一个描述匿名内部类的更好的链接,因为Java文档留下了一些需要的东西./编辑
大多数人将使用Anonymous内部类来动态定义侦听器.考虑这种情况:
我有一个Button,当我点击它时,我想让它显示一些东西到控制台.但我不想在不同的文件中创建一个新类,我不想在此文件中稍后定义内部类,我希望逻辑立即可用.
class Example {
Button button = new SomeButton();
public void example() {
button.setOnClickListener(new OnClickListener() {
public void onClick(SomeClickEvent clickEvent) {
System.out.println("A click happened at " + clickEvent.getClickTime());
}
});
}
interface OnClickListener {
void onClick(SomeClickEvent clickEvent);
}
interface Button {
void setOnClickListener(OnClickListener ocl);
}
}
Run Code Online (Sandbox Code Playgroud)
这个例子有点做作,显然不完整,但我认为它可以解决这个问题.
| 归档时间: |
|
| 查看次数: |
13036 次 |
| 最近记录: |