java - 使用 super 关键字从不同包调用基类的 protected 构造函数

标签 java inheritance constructor package super

如何调用一个包中的基类的构造函数,该包中的基类的构造函数具有 protected 访问修饰符,不受​​另一包中的派生类的访问修饰符的影响? 像这样: 包含派生类的包:

package MainPack;
import mypack.Checker;
import java.util.Scanner;
public class Start
{
    public static void main(String[] args)
    {
        BeginCheck bc=new BeginCheck();
    }
}
class BeginCheck extends Checker
{   
     BeginCheck()
    {
        System.out.print("Enter a String to Check: ");
        super(new Scanner(System.in).nextLine()); //I want to call it like this
    }
}

包含基类的包:

package mypack;
public class Checker
{
    String s;
    protected Checker()
    {
    }
    protected Checker(String s)
    {
        s=this.s;
    }

}

最佳答案

BeginCheck()
{
    System.out.print("Enter a String to Check: ");
    super(new Scanner(System.in).nextLine()); //I want to call it like this
}

对 super 构造函数的调用必须是每个构造函数中的第一行。除非您调用默认构造函数,否则您可以省略该调用,编译器将推断它。

BeginCheck() {
    super( new Scanner( System.in ).nextLine() );
}

不过,您确实不应该在构造函数中执行用户 IO。它应该保留用于仅将对象初始化为可用状态。

关于java - 使用 super 关键字从不同包调用基类的 protected 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25322952/

相关文章:

java - 解析.com : Get unique number when saving

java - 'println()'是PrintStream类的静态成员函数还是实例成员函数?

c# - 基类中的虚拟方法使用子类中的静态变量

c++ - 为什么具有用户声明的析构函数的类具有隐式默认的构造函数?

Java,找不到符号并且无法从数组列表中提取数据类型

javascript - JavaScript中如何从基类继承静态方法?

php - 在 PHP 中从父类(super class)获取子类命名空间

python - 部分构造函数初始化的性能

java - 枚举通用抽象类构造函数

java - 需要 Open CV 算法书籍吗?