JAVA:我如何检查 "protected abstract method"的范围?

标签 java

我是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/

相关文章:

java - 为什么我的方法不能正确检测对象是否为空?

java - File.exists() 方法总是返回 true,即使文件不存在

java - 将 UTC 日期字符串转换为特定格式的本地日期字符串

java - Jackson:反序列化枚举

java - 在MainActivity中从SecondActivity中接收一个字符串值,然后倒计时

java - IntelliJ 在配置后不生成元模型类(使用 gradle)

java - Sharedpreferences 中的值输入无效

java - 想要获取枚举值而不是 JSON 中的名称

java - jar转exe问题

java - UUID 不适用于 JOOQ 和 PostgreSQL