gpt4 book ai didi

java - 多态性的使用?

转载 作者:搜寻专家 更新时间:2023-11-01 02:22:51 24 4
gpt4 key购买 nike

员工类

public class Employee {
protected String name;
protected String jobsheetnumber;

public Employee(String n,String j){
this.name = n;
this.jobsheetnumber = j;
}
public Employee(String name)
{
this.name = name;
}

public String getName() {
return name;
}

public String getJobsheetnumber() {
return jobsheetnumber;
}

public void setName(String name) {
this.name = name;
}

public void setJobsheetnumber(String jobsheetnumber) {
this.jobsheetnumber = jobsheetnumber;
}



}

机械类

public class Mechanic extends Employee{


public Mechanic(String name,String jobsheetnumber){
super(name,jobsheetnumber);
}
}

主管类(class)

public class Supervisor extends Employee{


public Supervisor(String name){
super(name);
}
}

公司类[片段]

public class Company {
private String companyname;
private String companyaddress;
private String postalcode;
private String city;
private String country;
private String telephonenumber;
private String faxnumber;
private String province;
private Employee supervisor;
private Employee mechanic;




public Company(String companyname,String companyaddress,String postalcode,String city,String country,String telephonenumber,String faxnumber,String province,String supervisorname,String jobsheetnumber,String mechanicname)
{
this.companyname = companyname;
this.companyaddress=companyaddress;
this.postalcode = postalcode;
this.city=city;
this.country=country;
this.telephonenumber=telephonenumber;
this.faxnumber=faxnumber;
this.province=province;
supervisor = new Supervisor(supervisorname);
mechanic = new Mechanic(mechanicname,jobsheetnumber);




}

Employee 类是 Mechanic 和 Supervisor 类的父类(super class)。现在我正在使用 Employee 的属性,即子类 Mechanic 和 Supervisor 类中的 name 和 jobsheetnumber

代码工作正常..但是如果我想在 Mechanic 和 Supervisor 中添加扩展功能怎么办?然后我无法访问这些变量,因为引用是对 Employee 类型对象的引用。

这是对多态性的正确使用吗?每次我们创建 Supervisor/Mechanic 对象的引用时,我们必须使用 super() 作为构造函数?我们不能在 Supervisor 和 Mechanic 类中使用扩展功能吗?

最佳答案

如果你想调用父类(super class)的非零参数构造函数那么是的,你必须明确地调用它。如果父类(super class)构造函数没有参数,那么将为您插入调用。

多态性的要点是对象可以照顾好自己,而不必让程序的其余部分对它们进行微观管理,因此外部程序通过具有接口(interface)或父类(super class)类型的引用来引用它们,而无需知道确切的具体类型。例如,所有员工都可能有一种工作方法,其中主管的工作形式与机械师的工作形式不同; work 方法将被特定的子类覆盖,并可能调用子类的特定方法。因此,公司可以遍历所有员工并调用每个员工的工作,而工作对于不同的员工子类有不同的定义。

(在实践中,使用子类来描述角色太不灵活了,因为一个员工可能有多个角色,或者这些角色会随着时间而改变。通常最好使用组合,在这里将 Role 对象分配给一个 Employee。)

关于java - 多态性的使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34646974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com