Re: Absract class and its sub clases
teshmee@gmail.com wrote:
public abstract class Worker
{
protected String name;
protected double salaryRate;
double is a terrible type to model monetary facts.
You probably should make these instance variables private.
public String getName()
{ ... }
public double getsalaryRate()
{ ... }
public void setName(String n)
{ ... }
public void setsalaryRate(double sal)
{ ... }
public abstract double weeklySalary();
}
public class ParttimeWorker extends Worker
Why does ParttimeWorker extend Worker? It makes no use of any parent class
behaviors or characteristics.
{
private double SalaryRate;
In accordance with Sun's nearly universally-followed coding conventions,
instance and method variable names should start with a lower-case letter.
char Type;
int NormalHours;
int ExtraHours;
Why did you make these instance variables package-private?
private double Salary;
public ParttimeWorker(String SalaryRate,char Type,int NormalHours,int
ExtraHours);
{
this.SalaryRate = SalaryRate;
this.Type = Type;
this.NormalHours = NormalHours;
this.ExtraHours = ExtraHours;
}
public double getSalaryRate()
{
return SalaryRate;
}
public char getType()
{
return Type;
}
public int getNormalHours()
{
return NormalHours;
}
public int getExtraHours()
{
return ExtraHours;
}
public void setSalaryRate(double s)
{
SalaryRate = s;
}
public void setType(char t)
{
Type = t;
}
public void setNormalHours(int n)
{
NormalHours = n;
}
public void setExtraHours(int e)
{
ExtraHours = e;
}
public void calculate()
{
if (this.NormalHours > 40)
this.Salary = (this.ExtraHours * 1.5) + (this.NormalHours *
this.SalaryRate);
It is good practice to enclose the body of control statements (if, while, ...)
in braces ('{' and '}').
else
this.Salary = this.NormalHour * this.SalaryRate;
}
}
You didn't implement weeklySalary() in the subclass, but that begs the
question of why the subclass inherits from Worker in the first place.
I will bet you that if you look at the compiler error (You did get a compiler
error, right? You completely neglected to report what the error was.) that it
will tell you /precisely/ what you did wrong. It did, didn't it?
-- Lew