我有一个叫employee的超类~编译没有问题"Tool completed successfully"
代码如下
import java.util.*;
class Employee
{
public Employee(String n,double s,int year,int month,int day)
{
name=n;
salary=s;
GregorianCalendar calendar = new GregorianCalendar(year,month-1,day);//GregorianCalendar user 0 for january
hireDay = calendar.getTime();
} public String getName()
{
return name;
} public double getSalary()
{
return salary;
} public Date gethireDay()
{
return hireDay;
} public void raiseSalary(double byPercent)
{
double raise = salary * byPercent / 100;
salary += raise;
} private String name;
private double salary;
private Date hireDay;}
现在做一下叫manager的子类~代码如下class Manager extends Employee
{
/**
@param n the employe's name
@param s the salary
@param year the hire year
@param month the hire month
@param day the hire day
*/ public Manager(String n,double s,int year,int month,int day)
{
super(n,s,year,month,day);
bonus = 0;
} public double getSalary();
{
double bassSalary = super.getSalary();
return salary+bassSalary;
} public void setBonus(double b)
{
bonus= b;
} private double bonus;
}
但编译就出错了~显示
G:\java\P145\Manager.java:15: 找不到符号
符号: 构造函数 Employee(java.lang.String,double,int,int,int)
位置: 类 Employee
super(n,s,year,month,day);
^
G:\java\P145\Manager.java:19: 缺少方法主体,或声明抽象
public double getSalary();
^
G:\java\P145\Manager.java:22: 返回外部方法
return salary+bassSalary;
^
3 错误Tool completed with exit code 1
怎么会这样的呢???
代码如下
import java.util.*;
class Employee
{
public Employee(String n,double s,int year,int month,int day)
{
name=n;
salary=s;
GregorianCalendar calendar = new GregorianCalendar(year,month-1,day);//GregorianCalendar user 0 for january
hireDay = calendar.getTime();
} public String getName()
{
return name;
} public double getSalary()
{
return salary;
} public Date gethireDay()
{
return hireDay;
} public void raiseSalary(double byPercent)
{
double raise = salary * byPercent / 100;
salary += raise;
} private String name;
private double salary;
private Date hireDay;}
现在做一下叫manager的子类~代码如下class Manager extends Employee
{
/**
@param n the employe's name
@param s the salary
@param year the hire year
@param month the hire month
@param day the hire day
*/ public Manager(String n,double s,int year,int month,int day)
{
super(n,s,year,month,day);
bonus = 0;
} public double getSalary();
{
double bassSalary = super.getSalary();
return salary+bassSalary;
} public void setBonus(double b)
{
bonus= b;
} private double bonus;
}
但编译就出错了~显示
G:\java\P145\Manager.java:15: 找不到符号
符号: 构造函数 Employee(java.lang.String,double,int,int,int)
位置: 类 Employee
super(n,s,year,month,day);
^
G:\java\P145\Manager.java:19: 缺少方法主体,或声明抽象
public double getSalary();
^
G:\java\P145\Manager.java:22: 返回外部方法
return salary+bassSalary;
^
3 错误Tool completed with exit code 1
怎么会这样的呢???
{
double bassSalary = super.getSalary();
return salary+bassSalary;//EROOR!访问了父类的私有属性。你的意思是bonus+bassSalary
}
G:\java\P145\Manager.java:15: 找不到符号
符号: 构造函数 Employee(java.lang.String,double,int,int,int)
位置: 类 Employee
super(n,s,year,month,day);
^
G:\java\P145\Manager.java:19: 缺少方法主体,或声明抽象
public double getSalary();
^
G:\java\P145\Manager.java:22: 返回外部方法
return bonus+bassSalary;
^
3 错误
{
double bassSalary = super.getSalary();
return salary+bassSalary;
}这两个地方改了就OK了
{
double bassSalary = super.getSalary();
return salary+bassSalary;
}
第一行最后多了个分号,去掉就好了.
刚刚测试了修改后的代码,编译正常G:\java\P145\Manager.java:15: 找不到符号
符号: 构造函数 Employee(java.lang.String,double,int,int,int)
位置: 类 Employee 看这句应该是Employee类没有和Manager类放在同一个目录下
public double getSalary(); //这里多了个分号
{
double bassSalary = super.getSalary();
return salary+bassSalary; //子类不能直接访问父类的私有成员,楼主的本意是bonus+bassSalary吧,
}G:\java\P145\Manager.java:15: 找不到符号
符号: 构造函数 Employee(java.lang.String,double,int,int,int)
位置: 类 Employee
楼主把这两个类写在哪了?
G:\java\P145\Manager.java:15: 找不到符号
符号: 构造函数 Employee(java.lang.String,double,int,int,int)
位置: 类 Employee
super(n,s,year,month,day);
^
1 错误Tool completed with exit code 1
public double getSalary();//去掉分号
{
double bassSalary = super.getSalary();
return salary+bassSalary;?//salary改为bonus
}你两个错误都该了吗?
保存后打开一个新的编译器窗口,重新编译试试看?
public Employee(String n, double s, int year, int month, int day) {
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
hireDay = calendar.getTime();
} public String getName() {
return name;
} public double getSalary() {
return salary;
} public Date gethireDay() {
return hireDay;
} public void raiseSalary(double byPercent) {
double raise = salary * byPercent / 100;
salary += raise;
} private String name; private double salary; private Date hireDay;
}
Manager package cn.t1;class Manager extends Employee { public Manager(String n, double s, int year, int month, int day) {
super(n, s, year, month, day);
bonus = 0;
} public double getSalary() {
double bassSalary = super.getSalary();
return bonus + bassSalary;
} public void setBonus(double b) {
bonus = b;
} private double bonus;
}
测试:package cn.t1;public class T0 {
public static void main(String[] args) {
Manager m = new Manager("a", 100.0, 1, 1, 1);
System.out.println(m.getSalary());
}
}