Java 子类无法访问父类的ArrayList中存在的内容 抽象类工资单 { List nm=新的ArrayList(); 列表id=新的ArrayList(); List dob=new ArrayList(); } 类Employee extends Paympent实现Paympent { BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in)); int n; 字符串ename,eid,birth,pr_id; 公共无效添加员工() { 尝试 { System.out.print(“\n输入数字\t:”); n=Integer.parseInt(br.readLine()); 对于(int i=0;i

Java 子类无法访问父类的ArrayList中存在的内容 抽象类工资单 { List nm=新的ArrayList(); 列表id=新的ArrayList(); List dob=new ArrayList(); } 类Employee extends Paympent实现Paympent { BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in)); int n; 字符串ename,eid,birth,pr_id; 公共无效添加员工() { 尝试 { System.out.print(“\n输入数字\t:”); n=Integer.parseInt(br.readLine()); 对于(int i=0;i,java,arraylist,Java,Arraylist,我需要查看您的main方法。当我运行main时: abstract class PayRoll { List<String> nm=new ArrayList<String>(); List<String> id=new ArrayList<String>(); List<String> dob=new ArrayList<String>(); } class Employee extends P

我需要查看您的main方法。当我运行main时:

abstract class PayRoll
{
    List<String> nm=new ArrayList<String>();
    List<String> id=new ArrayList<String>();
    List<String> dob=new ArrayList<String>();
}


class Employee extends PayRoll implements PayEmpInt
{
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    int n;
    String ename,eid,birth,pr_id;
    public void addEmployee()
    {
        try
        {
            System.out.print("\nEnter the number\t :");
            n=Integer.parseInt(br.readLine());
            for(int i=0;i<n;i++)
            {
            System.out.print("\nEnter Employee name\t :");
            ename=br.readLine();
            System.out.print("\nEnter the Employee ID\t :");
            eid=br.readLine();
            System.out.print("\nEnter the D.O.B(mm-dd-yyy)\t :");
            birth=br.readLine();
            nm.add(ename);
            id.add(eid);
            dob.add(birth);
        }
    }
    catch(IOException e)
    {
        System.out.print("\nError while handling the Input. "+e);
    }
}


class Project extends Employee
{
    public void display()
    {
        System.out.print("\nName\t\tID\t\tDOB");
        for(int i=0;i<id.size();i++)
        System.out.println(nm.get(i)+"\t"+id.get(i)+"\n"+dob.get(i));
    }
}

import java.io.*;

class PayMain
{
  public static void main(String args[])throws IOException
  {
   int ch;
   BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
   while(true)
   {
    System.out.println("\nOptions:\n\t1. Employee DB\n\t2. Projects\n\t3. Exit");
    ch=Integer.parseInt(br.readLine());
    switch(ch)
    {
    case 1:
    Employee e=new Employee();
    e.addEmployee();
    System.out.print("\nEMPLOYEE LIST");
    e.employeeDetails();
    break;
    case 2:
    Project p=new Project();
    p.display();
    break;
    case 3:
    System.exit(0);
    }
   }
 }
我得到以下输出(使用示例输入):

输入号码:2

输入员工姓名:bob

输入员工ID:123

输入D.O.B(年月日):01-01-2222

输入员工姓名:alice

输入员工ID:234

输入D.O.B(年月日):04-44-4444

姓名ID:123 01-01-2222 艾丽丝234 04-44-4444

您需要确保在同一对象上调用方法


此外,您可能希望将addEmployee方法更新为addEmployees,因为它会提示您输入要添加的数字。

抽象类Payroll的字段没有修饰符,这意味着它们只能由同一包中的类访问。它们应该受到
保护
。或者如果合适,提供
公共
getter吃了。(在这里我说不)


我同意其他人的观点:建筑感觉怪异。请告诉我主要的类。我怀疑你可能有多个例证。奇怪的设计。为什么<代码>项目>代码>一个代码>雇员< /代码>?强烈建议重新思考你的结构。我同意@ QQILHQ,这是一个奇怪的架构。我认为项目不应该是E。xtend什么都可以。另外,员工也不是真正的工资单。

public static void main(String[] args) {

    Project aProject = new Project();

    aProject.addEmployee();
    aProject.display();
}