Collections Data Structure Java

import java.util.LinkedList;
class GenQueue {
  private LinkedList list = new LinkedList();
  public void enqueue(E item) {
    list.addLast(item);
  }
  public E dequeue() {
    return list.poll();
  }
  public boolean hasItems() {
    return !list.isEmpty();
  }
  public int size() {
    return list.size();
  }
  public void addItems(GenQueue q) {
    while (q.hasItems())
      list.addLast(q.dequeue());
  }
}
public class GenQueueTest {
  public static void main(String[] args) {
    GenQueue empList;
    empList = new GenQueue();
    GenQueue hList;
    hList = new GenQueue();
    hList.enqueue(new HourlyEmployee("T", "D"));
    hList.enqueue(new HourlyEmployee("G", "B"));
    hList.enqueue(new HourlyEmployee("F", "S"));
    empList.addItems(hList);
    while (empList.hasItems()) {
      Employee emp = empList.dequeue();
      System.out.println(emp.firstName + " " + emp.lastName);
    }
  }
}
class Employee {
  public String lastName;
  public String firstName;
  public Employee() {
  }
  public Employee(String last, String first) {
    this.lastName = last;
    this.firstName = first;
  }
  public String toString() {
    return firstName + " " + lastName;
  }
}
class HourlyEmployee extends Employee {
  public double hourlyRate;
  public HourlyEmployee(String last, String first) {
    super(last, first);
  }
}