我是一个涉猎Java的网络开发人员(再次),我遇到了麻烦.
基本上,我有一个超类Employee,它有两个子类,扩展名为Management和Programmer.Employee类包含一个employees基本上是Employee对象数组的数组.
以下是两个类(Employee和Management)和最终主要方法的重要摘要.我将在底部解释输出.
public class **Employee** {
private static String firstName;
protected static int MAXEMPLOYEES = 5;
protected Employee[] employees = new Employee[MAXEMPLOYEES];
protected int totEmployees = 0;
public Employee(String first) {
setFirstName(first);
}
public void setFirstName(String str){
firstName = str;
}
public String getFirstName(){
return firstName;
}
public boolean addEmployee(String fname) {
boolean added = false;
if (totEmployees < MAXEMPLOYEES) {
Employee empl = new Employee(fname);
employees[totEmployees] = empl;
added = true;
totEmployees++;
}
return added;
}
}
public class **Management** extends **Employee** {
private String title = "Project Manager";
public Management(String fname, String t){
super(fname);
title = t;
}
public boolean addManagement(String fname, String t){
boolean added = false;
if (totEmployees < MAXEMPLOYEES) {
employees[totEmployees] = new Management(fname, t);
added = true;
totEmployees++;
}
return added;
}
}
-------------------------------------
package employee;
public class EmployeeApplication {
public static void main(String[] args) {
Employee[] empl = new Employee[3];
empl[0] = new Employee("Kyle");
empl[1] = new Management("Sheree", "Director");
System.out.println(empl[0].getFirstName());
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我希望系统打印出"Kyle",但它打印出"Sheree".有任何想法吗???
private static String firstName;
Run Code Online (Sandbox Code Playgroud)
您创建了firstName静态,这意味着所有实例共享相同的名称.您需要删除静态修饰符,以便不同的Employees具有不同的名称.您还需要将私有访问修饰符更改为protected,以便子类继承该字段.
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |