实现抽象方法时不使用@Override批注

时间:2019-04-02 10:44:18

标签: java android kotlin

this Runnable implementation的第一个代码块中,为什么@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);

将此与我的Android onCheckedChanged函数进行比较,这也是一种抽象方法:

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

    }

})

必须具有override修饰符(注意:这是kotlin代码,但原理相同)。

第二个代码块为什么需要第二个代码块,而第一个代码块却没有?

1 个答案:

答案 0 :(得分:0)

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

请参见Overriding Methods in Kotlin