我是Java编程的初学者,所以我无法测试 protected 抽象方法
的范围。
要检查 protected 方法
,我测试了此代码:
package A;
public class NewClassA {
protected String a(){ return "a"; }
}
// Main
NewClassA a = new NewClassA();
String str = a.a(); // works fine
//New Package
package B;
import A.NewClassA;
public class NewClassB {
NewClassA x = new NewClassA();
String str = x.a(); // Error convert to a() to public
}
最佳答案
抽象
方法是一种没有定义行为的方法。相反,抽象类的子自行定义其行为。抽象方法只能在抽象类中定义,并且不能被实例化。例如,在包A中:
package A;
public abstract class NewClassA {
protected abstract String getString();
}
还有:
package A;
public class NewClassB extends NewClassA {
@Override
protected String getString() { //Must be overridden by non-abstract child
return "B";
}
}
然后,包 B 中的某个位置:
package B;
import A.*;
public class ProtectChecker {
NewClassA x = new NewClassA(); //Cannot instantiate abstract NewClassA
NewClassA y = new NewClassB(); //OK
String str = y.getString(); //Error convert to getString() to public
}
关于JAVA:我如何检查 "protected abstract method"的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37821003/