2015-12-21 83 views
0

有沒有辦法阻止子類重寫實現超類實現的接口。防止子類重寫接口

我想在android中創建一個包含listView的自定義視圖,並且實現onScroll偵聽器,但是當子類設置onScroll偵聽器的列表時。超類的監聽器從不被調用。

+8

'final'關鍵字? – sidgate

回答

3

是的,有。

上的最後一句話是:final

通過聲明的方法final你聲明的子類不允許@Override此方法(即使沒有註釋,則)。

考慮這個接口:

interface MyInter { 
    public void foo(); 

    public String bar(); 
} 

而且你的類

public class MyClass implements MyInter { 

    @Override 
    public final void foo() { 
    //Cant touch this 
    } 

    @Override 
    public String bar() { 
    return "foo"; 
    } 

} 

現在你的第三類是可以擴展MyClass的 - 但不限於覆蓋bar()因爲foo()final關鍵字保護:

public class Thirs extends MyClass { 
    @Override 
    public String bar() { 
    return "bar"; 
    } 
} 
1

您可以添加final關鍵字來完成此操作。

E.g:

public final void foo() { 
    .... 
}