java - new之后如何调用java重写函数

标签 java constructor

我经常在java代码中发现新的重写

classB body
....
    ClassA a = new ClassA(){
@Override 
public void funcion(){
 atributeClassB = whatever 
   } 
 } ;
....

这种构造怎么称呼?括号内的代码什么时候执行?这段代码如何访问 classB 属性?

事实上,如果我只知道这种工作方式是如何调用的,我可以在谷歌中记录自己,但没有 key 名称我找不到它。

我找到的代码是这个here第 151 行

最佳答案

它被称为匿名本地派生类(或“匿名内部类”,尽管“内部”和本地之间存在区别[所有本地类都是内部类;并非所有内部类都是内部类)本地;更多内容见下文])。大括号内的代码构成匿名类的类定义的一部分。

这个

ClassA a = new ClassA(){@Override public void funcion(){ atributeClassB = whatever } } ;

...实际上相当于:

ClassA a = new SubClassA();

...其中 SubClassA 在包含类中定义:

class SubClassA extends ClassA {
    @Override public void funcion(){ atributeClassB = whatever }
}

...尽管还有更多的内容,因为示例中的匿名类是在方法中定义的(这是“本地”与“内部”的东西),more in the various sections starting here .

关于java - new之后如何调用java重写函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9993176/

相关文章:

java - java中如何测量两次按钮点击之间的时间

java.lang.NoSuchMethodError : org. apache.log4j.Logger 错误

c++ - 对单参数构造函数使用 explicit 关键字

c++ - 如何让编译器知道调用哪个函数重载以避免歧义?

c# - 在 C# 中继承 List<> 并覆盖构造函数

java - 从 Hazlcast 缓存获取对象是不可变的

java - 如何让浏览器将文本解释为html内容而不是纯文本?

java - 如何选择 Locale 常量?

javascript - 原型(prototype)、对象、构造函数、 "this"、函数

java - 在构造函数中调用 this() 是否会隐式调用 super()?