【发布时间】:2014-07-10 22:46:21
【问题描述】:
好的,所以我有这个类 Insurance 及其构造函数。
public class Insurance
{
protected String pNum, pDate;
protected int yPrem;
public Insurance(String pNum, String pDate, int yPrem)
{
this.pNum = pNum;
this.pDate = pDate;
this.yPrem = yPrem;
}
}
如何使 Auto 扩展保险类?我需要将超类的所有参数都传递给子类吗?
public class Auto extends Insurance
{
private String vehicleID, make, model;
private int year, accidents, age;
public Auto(String pNum, String pDate, int yPrem, String vehicleID,
String make, String model, int year, int accidents)
{
super(pNum, pDate, yPrem);
this.vehicleID = vehicleID;
this.make = make;
this.model = model;
this.year = year;
this.accidents = accidents;
age = 2014-year;
}
}
Auto 的参数列表真的需要包含来自超类的所有参数吗? 为了澄清,还有一个 Property 类扩展了 Insurance 类。
【问题讨论】:
-
是的,你做得对。
-
这里只有两件事看起来没有完成:1)硬编码的 2014 年(明年运行程序时会发生什么?),以及 2)存储年龄的数据模型(本质上会变成每年都不正确,需要更新)而不是车辆的制造日期(永远不会改变)。但就您的方法而言,您做的是正确的事情。
-
正如@rgettman 回答中的 cmets 所述,您的类名也可能更精确一些。我相信您的意思是让他们成为
InsurancePolicy和AutoInsurancePolicy(并且Auto指的是汽车的保险单,而不是汽车本身),所以如果这是真的,您可能应该重命名它们以使其更清晰.
标签: java class inheritance parameters super