抽象方法的訪問修飾符
阿新 • • 發佈:2018-12-23
抽象方法不能使用private修飾符,也不宜使用預設修飾符(default)
(1)如果使用private修飾符
public abstract class SuperClass {
/*
* The abstract method test in type SuperClass can only set a visibility modifier,
* one of public or protected
*/
private abstract void test();//編譯通不過
}
抽象方法必須對子類可見,而private修飾的方法對子類不可見,因此不能使用private修飾符。
(2)如果使用預設修飾符(即不帶修飾符)
package cn;
public abstract class SuperClass {
//採用package修飾符,可以通過編譯,但是後患無窮
//該方法,不一定對子類可見,除非子類也在這個包下
abstract void test();
}
package com;
import cn.SuperClass;
public class SubClass extends SuperClass {
/*
* This class must implement the inherited abstract method SuperClass.test(),
* but cannot override it since it is not visible from SubClass.
* Either make the type abstract or make the inherited method visible
*/
@Override
void test() {//編譯出錯
//子類和父類,不在同一個包下,因此不能訪問父類的package方法
}
}