1) OnCreate是ClsLast類的實例化對象的公共方法。 但我想限制OnCreate方法作爲保護。面向對象有關接口,抽象類和具體類的問題
interface InterFace {
void OnCreate();
}
class ClsFirst implements InterFace {
@Override
public void OnCreate() { }
}
class ClsLast extends ClsFirst{ }
class Test {
static void main(){
ClsLast objClsAct = new ClsLast();
objClsAct.OnCreate();
}
}
2)如果我設置onCreate方法在接口保護
interface InterFace {
protected void OnCreate();
}
我得到的錯誤是這樣的: Illegal modifier for the interface method OnCreate; only public & abstract are permitted
3)如果我設置保護在ClsFirst類中實現InterFace的方法如下:
interface InterFace {
void OnCreate();
}
class ClsFirst implements InterFace {
@Override
protected void OnCreate() { }
}
我得到這個錯誤: Cannot reduce the visibility of the inherited method from InterFace
4)當我改變ClsFirst爲抽象類和實現接口
interface InterFace {
void OnCreate();
}
abstract class ClsFirst implements InterFace {
}
我還沒有實現的OnCreate裏面的方法ClsFirst類但ClsLast爲什麼?
摘要
- 我怎樣才能設置接口方法只能在派生類中使用?
- 爲什麼我不能在Interface中設置受保護訪問的方法?
- 爲什麼在實現InterFace後,我不能設置不同於公共類的訪問器類型?
- 抽象類,即使它們實現了接口,也不必自己添加未實現的方法,直到一個類派生抽象類爲止。爲什麼?
非常感謝你從現在開始給我們的答覆。
你能解釋一下你認爲在哪種情況下實現一個接口,但只限制派生類的訪問會有意義嗎?如果只有派生類可以看到一個方法,爲什麼你需要一個接口? – dtb
我想創建接口,並從創建類結構開始部署一些規則。但是,當我試圖做到這一點時,我遇到了其他問題。我想,在你的答案中,可能有關於面向對象和所有人的關於面向對象的良好信息。但是我的第一個願望是使用接口和抽象類來制定規則和創建良好的類結構。 – uzay95
OOP的一點是,開發人員可以自由設計他認爲合適的類的非公共部分。您只能將規則放在類結構的公共部分。 – dtb