Java 多层次的继承混乱
我正在从事这个项目,在这个项目中,我需要为层次结构系统提供多层次的继承。层次结构是这样工作的,员工(摘要)->技术员工(摘要)->软件工程师和技术负责人 我试图做的事情是在其中一个类中创建一种“管理变量”,以充分建立技术负责人和软件工程师之间的“is-a”关系。本质上,我需要创建一个新的技术顾问,即经理。技术人员的基本工资应为员工的1.3倍 技术工人。TechnicalLeads的默认员工人数应为4人 我无法理解这个想法,有人能给我解释一下是怎么做到的吗?我知道继承是如何工作的,但当涉及到仔细跟踪这些时,我真的觉得自己在这方面相当糟糕。从技术上讲,我不知道在哪里写什么 雇员 技术人员 技术负责人Java 多层次的继承混乱,java,inheritance,Java,Inheritance,我正在从事这个项目,在这个项目中,我需要为层次结构系统提供多层次的继承。层次结构是这样工作的,员工(摘要)->技术员工(摘要)->软件工程师和技术负责人 我试图做的事情是在其中一个类中创建一种“管理变量”,以充分建立技术负责人和软件工程师之间的“is-a”关系。本质上,我需要创建一个新的技术顾问,即经理。技术人员的基本工资应为员工的1.3倍 技术工人。TechnicalLeads的默认员工人数应为4人 我无法理解这个想法,有人能给我解释一下是怎么做到的吗?我知道继承是如何工作的,但当涉及到仔细跟
另一个简短的问题,在代码的这一部分
baseSalary=getBaseSalary()*1.3代码>我是否需要将基本工资定义为受保护?为了访问私有字段。好吧,有时我会想出来。这是问题的解决办法
我在Employee类中添加了一个manager变量及其相应的setter和getter,以供以后使用
abstract class Employee {
private String name;
protected double baseSalary;
protected Employee manager; // This is what I've added.
Employee(String name, int baseSalary){
this.name = name;
this.baseSalary = baseSalary;
}
public String getName() {
return name;
}
public double getBaseSalary() {
return baseSalary;
}
public String getManager() {
return manager.getName();
}
public void setManager(Employee manager) {
this.manager = manager;
}
}
然后,我向Technical Employee添加了一个Technical Lead对象,以便我们可以在非抽象类(如软件工程师)中设置经理
abstract class TechnicalEmployee extends Employee{
private int checkIns;
private TechnicalLead technicalLead; // This is the manager of the technical employee..
TechnicalEmployee(String name){
super(name, 75000);
this.manager = technicalLead;
}
}
出于演示目的,我创建了一个main,并用以下方式对其进行了测试:
public class CompanyManagement {
public static void main(String[] args) {
SoftwareEngineer s1 = new SoftwareEngineer("Patates");
TechnicalLead t1 = new TechnicalLead("Patlıcan");
s1.setManager(t1);
System.out.println(s1.getManager());
}
}
结果是,;帕蒂尔肯。看来它在起作用。谢谢大家。Java和多重继承标签不在一起。请先阅读标签说明/描述,然后再将其打上,新手错误。@Mad physicast要求您的是请删除多重继承标签。Java只使用单继承。确实如此。我现在再次修复了标记,希望有人能向我解释实际情况。Java继承不是为一般用途的问题而设计的,它以一种可以用Java机制表达某些情况的方式简化了世界。在大多数情况下,在没有真实用例的情况下谈论一个完全假设的情况是很好的,但是没有什么是有用的。
abstract class Employee {
private String name;
protected double baseSalary;
protected Employee manager; // This is what I've added.
Employee(String name, int baseSalary){
this.name = name;
this.baseSalary = baseSalary;
}
public String getName() {
return name;
}
public double getBaseSalary() {
return baseSalary;
}
public String getManager() {
return manager.getName();
}
public void setManager(Employee manager) {
this.manager = manager;
}
}
abstract class TechnicalEmployee extends Employee{
private int checkIns;
private TechnicalLead technicalLead; // This is the manager of the technical employee..
TechnicalEmployee(String name){
super(name, 75000);
this.manager = technicalLead;
}
}
public class CompanyManagement {
public static void main(String[] args) {
SoftwareEngineer s1 = new SoftwareEngineer("Patates");
TechnicalLead t1 = new TechnicalLead("Patlıcan");
s1.setManager(t1);
System.out.println(s1.getManager());
}
}