Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,当我可以导入超类时,为什么我不能将子类导入另一个类?_Java_Oop_Inheritance_Import - Fatal编程技术网

在Java中,当我可以导入超类时,为什么我不能将子类导入另一个类?

在Java中,当我可以导入超类时,为什么我不能将子类导入另一个类?,java,oop,inheritance,import,Java,Oop,Inheritance,Import,我正在构建一个既有工人又有经理的小规模系统,经理继承所有工人属性,因为他也是工人,但在系统中具有更高的访问权限。我有一个系统类,为了清晰起见,它的大小已经减小了 import java.text.ParseException; import java.util.ArrayList; import java.util.Scanner; public class system { static Depot depot = new Depot("d1"); //static Depo

我正在构建一个既有工人又有经理的小规模系统,经理继承所有工人属性,因为他也是工人,但在系统中具有更高的访问权限。我有一个系统类,为了清晰起见,它的大小已经减小了

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Scanner;

public class system {
    static Depot depot = new Depot("d1");
    //static Depot depot2 = new Depot("d2");
    //static Depot depot3 = new Depot("d3");

    static ArrayList<Depot> depotArray = new ArrayList<Depot>();

    public static void systemSetup() {
        depotArray.add(depot);
    }

    public static void main(String[] args) throws ParseException {
        StateThreadClass stateThreadClass = new StateThreadClass();
        Thread thread = new Thread(stateThreadClass);
        thread.start();     
        systemSetup();
        GetDepot();
    }
  }
我可以毫无问题地实例化Worker,并在系统中使用它,但是当我尝试实例化Manager时,我会收到一个错误,说“Manager无法解析为类型”,我可以选择导入它。当我这样做时,我得到另一个错误“导入工作程序无法解决”

这是我的Worker和Manager类减去不必要的代码

import java.io.IOException;

public class Worker {    
private String username; 
private String password; 
private boolean available;

public Worker(String username, String password, boolean av) {
    this.username = username;
    this.password = password;
    this.available = av;
}

public Boolean CheckPassword(String password) {         
    return this.password.equals(password);
}   

public Boolean CheckUsername(String username) {         
    return this.username.equals(username);
}               

public class Manager extends Worker {           
    public Manager(String username, String password, boolean av) {
        super(username, password,av);
    }
}   
任何帮助都将不胜感激,我知道我不应该使用静态,但我会在另一天处理!
干杯

确保在自己的文件中单独定义Manager类。由于它被定义为Worker的内部类,因此当前无法在Worker类之外访问它

一旦您修复了这个问题,那么您应该能够从Depot类中引用Manager类,只要它们在同一个包中。如果没有,那么只需包含Manager类的导入,就可以访问Manager类


关于内部类的一些信息:。

我相信你的意思是
公共类管理器扩展Worker
而不是扩展
Driver
省略不必要的代码是好的,但是您留在其中的代码仍然有意义。
Manager
应该是
Worker
的一个内部类,还是您只是省略了
Worker
类的底部?有什么原因使Manager类位于Worker中吗?您在命名约定和导入方面犯了一些基本错误。不要调用主类系统(太接近系统,根据Java编码标准,类应该以大写字母开头)。我怀疑您的Manager类应该是Worker的子类,而不是Driver的子类。然后,您只需要包含引用Manager类的相应包声明的导入。驱动程序只是在为本文编辑时错误地出现在这里。它是我代码中的工作者。
import java.io.IOException;

public class Worker {    
private String username; 
private String password; 
private boolean available;

public Worker(String username, String password, boolean av) {
    this.username = username;
    this.password = password;
    this.available = av;
}

public Boolean CheckPassword(String password) {         
    return this.password.equals(password);
}   

public Boolean CheckUsername(String username) {         
    return this.username.equals(username);
}               

public class Manager extends Worker {           
    public Manager(String username, String password, boolean av) {
        super(username, password,av);
    }
}