繁体   English   中英

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

[英]In Java why would I be unable to import a sub-class into another class when I can import the superclass?

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

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();
    }
  }

一旦我得到一个仓库,它就会把我带到我的主要仓库类,它包含大多数计算。

import java.io.IOException;
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Iterator;
import java.util.Scanner;

//import Driver.Manager;

public class Depot{     
    String name;
    int LOCount = 0;
    int counter = 0;
    @SuppressWarnings("deprecation")
    Long date3 = 1478217600000L;
    Date date1 = new Date(1478217600000L);
    Date date2 = new Date(1479217600000L);  
    Worker worker = new Worker ("tom", "tom", false);
    Worker worker = new Worker ("phil2", "phil2", false);
    Worker worker = new Worker ("phil", "phil", true);
  ----->  Manager manager = new Manager("ben", "ben", true);
    etc.....
 }

我可以毫无问题地实例化 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 类。

关于内部类的一些信息: http : //www.javaworld.com/article/2077411/core-java/inner-classes.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM