完成代码,但如何使用抽象类?

时间:2015-11-12 05:11:10

标签: java abstract

所以我已经完成了我的代码,它将员工信息作为输入,并且可以根据用户的需求进行排序。但是对于部分要求,我有两个使用抽象类“Employee”,它有两个子类“TempEmployee”和“Perm” 员工“。我把我的代码放在抽象类下面以便工作吗?另外,当我排序时我希望所有的信息都与它一起使用,所以如果我按薪水排序,我想要人员的姓名和部门谁在订购时赚了那个工资,而不仅仅是一个有序的数字清单。这也可以吗?

import java.util.Scanner;
    import java.util.ArrayList;
 import java.util.Collections;
import java.util.Arrays;


public class Assignment55_000848913
{
  public static void main(String[] args)
  {
Scanner in = new Scanner(System.in);
String Continue = "y";
int Count = 0;
int SortingChoice;
ArrayList<String> Names       = new ArrayList<String>();
ArrayList<String> Department  = new ArrayList<String>();
ArrayList<String> Designation = new ArrayList<String>();
ArrayList<Float>  Salary      = new ArrayList<Float>();

    //******************************************************//

do
{
   System.out.println("Enter Employee Name: ");
   String x = in.next();
   Names.add(x);

   System.out.println("Enter Employee Designation ('temporary or permanent'): ");
   String y = in.next();
   Designation.add(y);

   System.out.println("Enter Employee Department: ");
   String z = in.next();
   Department.add(z);

   System.out.println("Enter Employee Salary: ");
   float i = in.nextFloat();
   Salary.add(i);

   System.out.println("Do you wish to add another employee? ('y'/'n'): ");
   Continue = in.next();

   Count = Count + 1;
}
while(Continue.equals("y"));

//***********************************************************************//

System.out.println("Enter sorting Criterion Number: 1. Name, 2.Department, 3. Salary. ");
SortingChoice = in.nextInt();

if(SortingChoice == 1)
{
  Collections.sort(Names);
     for(int i=0; i<Names.size(); i++)
     {
        System.out.println(Names.get(i));
     }
}

if(SortingChoice == 2)
{
  Collections.sort(Department);
     for(int i=0; i<Department.size(); i++)
     {
        System.out.println(Department.get(i));
     }
}

if(SortingChoice == 3)
{
  for(int k=0; k<Salary.size(); k++)
  {
    if(Designation.get(k).equals("temporary"))
      {
         Salary.set(k, Salary.get(k)*1920);
      }
  }


  Collections.sort(Salary);
     for(int i=0; i<Salary.size(); i++)
     {
       System.out.print("$");
       System.out.println(Salary.get(i));
     }
}
  }
}

 // public  class Employee
  // {

 // }

 // public class TempEmployee extends Employee
     // {

//  }

//  public class PermEmployee extends Employee
//  {

//  }

1 个答案:

答案 0 :(得分:0)

抽象类更多是为了不必重复。所以一个好的开始就是继续定义你的PermEmployee类。然后定义您的TempEmployee类。无论它们有什么共同的变量和方法,您都可以放入AbstractEmployee类,并让每个类继承它。这样,剩下的方法和变量将是Temp和Perm员工类独有的。

其余的只是练习学习定义抽象课程的机制,我将留给你阅读。确定方法何时应该是抽象的,哪些方法可以在所有子类中共享,哪些方法应该具有需要在特殊情况下覆盖的默认行为。