java - 抽象类构造函数访问修饰符

标签 java

一个抽象类只能作为基类被其他类扩展,对吧?抽象类的构造函数可以具有通常的访问修饰符(public、protected 和 private(供内部使用))。 protectedpublic 中的哪一个是正确的访问修饰符,因为抽象类型似乎表明从技术上讲公共(public)构造函数将非常 protected ?我应该只在所有构造函数上使用 protected 吗?

最佳答案

since the abstract type seems to indicate that technically a public constructor will act very much protected

这是不正确的。抽象类不能通过调用其构造函数直接实例化,但是,任何具体实现都会继承抽象类的方法和可见性

所以抽象类当然可以有公共(public)构造函数。

实际上,抽象类的构造函数只能从实现的构造函数中调用,所以它是public还是protected没有区别。例如:

public class Scratch
{
    public static abstract class A
    {
        public A( int i ) {}
    }

    public static class B extends A
    {
        private B() { super(0); };
    }
}

关于java - 抽象类构造函数访问修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/260744/

相关文章:

java - 无法在屏幕上正确显示用户和接收者发送的聊天

java - MassIndexer.createIndexer() 在索引多个实体类型时卡住

java - 如何在java类中处理和显示DataDecodeException日志

java - Stringtemplate 比较字符串不起作用

java - 如何在正则表达式中表示固定数量的重复?

java - 自动运行/调试配置的 IntelliJ 配置以使用 TestNG 而不是 Gradle 进行测试

java - 我无法发现的重复错误

java - 在java中将对象作为参数传递

java - Struts重定向问题

java - 如何将 UserGroupInformation 与 Kerberos WebHDFS 结合使用