首页 > 解决方案 > 实现抽象方法时不使用@Override 注解

问题描述

为什么在这个 Runnable 实现的第一个代码块中没有@Override注释run()?-run()是一个抽象方法:

handler = new Handler();

final Runnable r = new Runnable() {
    public void run() {
        tv.append("Hello World");
        handler.postDelayed(this, 1000);
    }
};

handler.postDelayed(r, 1000);

将此与我的 AndroidonCheckedChanged函数进行比较,该函数也是一个抽象方法:

currentlocation.setOnCheckedChangeListener(object: RadioGroup.OnCheckedChangeListener{
    override fun onCheckedChanged(group: RadioGroup?, checkedId: Int) {

    }

})

必须有override修饰符(注意:这是 kotlin 代码,但适用相同的原则)。

为什么第二个第二个代码块需要有 override 关键字,但第一个没有?

标签: javaandroidkotlin

解决方案


那是因为语言设计者是这样决定的。Kotlin 需要显式覆盖修饰符,而 Java 不需要。

请参阅Kotlin 中的覆盖方法


推荐阅读