抽象类只能用作由其他类扩展的基类,对吗?抽象类的构造函数可以具有常用的访问修饰符(公共,保护和私有(供内部使用))。其中protected
和public
是使用正确的访问修饰符,因为抽象类型似乎表明技术上的公共构造将起到非常保护?我应该在所有构造函数上使用protected吗?
因为抽象类型似乎表明从技术上讲,公共构造函数将在很大程度上受到保护
这是不正确的。抽象类不能通过调用其构造函数直接实例化,但是,任何具体实现 都将继承抽象类的方法和可见性
因此,抽象类当然可以具有公共构造函数。
实际上,只能从实现的构造函数中调用抽象类的构造函数,因此在公开还是受保护之间没有区别。例如:
public class Scratch
{
public static abstract class A
{
public A( int i ) {}
}
public static class B extends A
{
private B() { super(0); };
}
}
问题内容: 谁能解释一个 明确的无参数构造函数 (和其他构造函数)的默认访问修饰符是什么? 问题答案: 构造函数在这方面与方法相同-如果您未提供显式的public,private或protected,则构造函数将获得默认的“ package private”可见性。可以从同一类或同一包中的任何其他类中调用它,但不能从不同包中的子类中调用(因此,如果一个类仅具有包可见的构造函数,则任何子类都必须位于
我有一个java类,它只有静态方法和字段,所以我不想为此创建任何对象。我可以从两个方面来理解, 创建类摘要 使用私有构造函数。 这两种方法哪一种更好?
问题内容: 我们都知道,如果不专门定义构造函数,则编译器会插入一个不可见的零参数构造函数。我以为它的访问修饰符是公开的,但是在处理内部类问题时,我发现我可能是错的。这是我的代码: 在另一个包中有一个子类: 您将在该方法中得到一个错误,但是如果您将一个公共构造函数添加到该类中,则可以解决该错误。这就是为什么我认为默认构造函数的修饰符不是公共的!那么谁能告诉我默认构造函数的访问修饰符是什么? 问题答案
另一个包中有的子类: 您将在方法中得到一个错误,但如果您将公共构造函数添加到类中,则该错误将得到解决。这就是为什么我认为默认构造函数的修饰符不是public的原因!那么谁能告诉我缺省构造函数的访问修饰符是什么吗?
问题内容: 我有这样的事情: 如您所见,超类的init方法是抽象的,并在创建对象后由构造函数自动调用。 当我需要创建这种类型的对象且其结构不会及时更改时,我很好奇我是否会遇到这样的代码问题。 有什么更好的办法吗?它可以在Java中运行,但是可以在C ++和ActionScript中运行吗? 谢谢你的答案。 问题答案: 请勿从构造函数中调用过多的方法。 引用 有效Java 2nd Edition,条
我想如果一个类被声明为public,它可以从任何地方访问。但是为什么eclipse称之为错误呢?