怎么我的找不到构造函数呢???那里错了的啊???

猫儿爷爷 2010-03-28 02:10:10
class Employee //所有员工总的父类
{
private String name ;//员工的姓名
private int yue ; //员工的生日

Employee( String name , int yue ) //构造方法
{
this.name = name ;
this.yue = yue ;
}
void setName( String name )
{
this.name = name ;
}
void setYue (int yue)
{
this.yue = yue ;
}
String getName()
{
return name ;
}
int getYue()
{
return yue ;
}
void getSalary(int month) //方法:getSalary(int month)
{
if ( yue == month )
{
System.out.println("生日快乐,公司将额外奖励你100");
}
}
void gongzi ()
{
System.out.println("父类的成员方法");
}
}
//拿固定工资的员工
class SalariedEmployee extends Employee
{
private double yuexin ; //月薪

SalariedEmployee ( double yuexin ) //构造方法
{
this.yuexin = yuexin ;
}
void setYuexin( double yuexin )
{
this.yuexin = yuexin ;
}
double getYuexin()
{
return (double)yuexin;
}
void gongzi ()
{
System.out.println("拿固定工资得是" + yuexin );
}

}

//按小时拿工资的员工
class HourlyEmployee extends Employee
{
private double gongzi ; //每小时的工资、
private int xiaoshi ; //每月工作的小时数

HourlyEmployee ( double gongzi , int xiaoshi )//构造方法
{
this.gongzi = gongzi ;
this.xiaoshi = xiaoshi ;
}

void setGongzi ( double gongzi )
{
this.gongzi = gongzi ;
}
void setXiaoshi ( int xiaoshi )
{
this.xiaoshi = xiaoshi ;
}

double getGongzi()
{
return (double)gongzi ;
}
int getXiaoshi()
{
return xiaoshi ;
}
//每月工作超出160小时的部分按照1.5倍工资发放
void gongzi () //工作时间
{
if ( xiaoshi > 160 )
{
gongzi =(float) (gongzi * xiaoshi * 1.5) ;
System.out.println("超出时间得工资是 " + gongzi );
}
else
{
gongzi = gongzi * xiaoshi ;
System.out.println("没有超出时间得工资是" + gongzi );
}
}
}

//销售人员,
class SalesEmployee extends Employee
{
private double xiaoshou ; //月销售额
private double ticheng ; // 提成率

SalesEmployee ( double xiaoshou , double ticheng ) //构造方法
{
this.xiaoshou = xiaoshou ;
this.ticheng = ticheng ;
}

void setXiaoshou( double xiaoshou )
{
this.xiaoshou = xiaoshou ;
}
void setTicheng( double ticheng )
{
this.ticheng = ticheng ;
}

double getXiaoshou()
{
return (double)xiaoshou ;
}
double getTicheng()
{
return (double)ticheng ;
}
//工资由月销售额和提成率决定
void gongzi()
{
System.out.println("销售得工资是" +( xiaoshou * ticheng )) ;
}

}
//有固定底薪的销售人员
class BasedPlusSalesEmployee extends SalesEmployee
{
private double dixin ;
private double ticheng;

BasedPlusSalesEmployee ( double dixin )
{
this.dixin = dixin ;
}
double setDixin( double dixin )
{
this.dixin = dixin ;
}
double getDixin()
{
return (float)dixin ;
}

void gongzi ()
{
System.out.println("拿底薪得销售工资是 " + (dixin * ticheng)) ;
}
}
...全文
323 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wen19870521 2010-03-29
  • 打赏
  • 举报
回复
子类的构造方法里也要有父类的name yue 吧 在子类的构造方法里 加super.(name yue)应该可以的吧
无聊司马 2010-03-28
  • 打赏
  • 举报
回复
自己去弄了个主程序看看 好像就是楼上说的那样只要有个构造的方法就行了,顺便学了一点类的知识
wildpinemountain 2010-03-28
  • 打赏
  • 举报
回复
如果不定义构造函数,系统则调用默认构造函数。
一旦定义,系统就不提供默认构造函数啦,如果需要,要自己定义
canoe982 2010-03-28
  • 打赏
  • 举报
回复
创建派生类的对象时,会调用父类的构造函数。在没有指定时,会调用其默认构造函数。而你的父类中没有默认的构造函数。

一般来说,应该是定义派生类的构造函数时,初始化从父类继续而来的相关属性的。
liu_liyang 2010-03-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 c5153000 的回复:]
引用 4 楼 amos1989 的回复:
本来列,当你创建一个类的时候 如果不给他写构造函数时,系统会默认帮他构建一个空的构造函数。所以当有子类继承这个类的时候,就会继承他的这个空的构造的函数,你现在自己写了一个有参的构造函数,系统就不会帮他构建空构造函数了,所以你必须加上一个空的构造函数。这也是一个习惯。。反应到代码中:
在Employee 类,增加如下
Employee(){} 就可以了……
[/Quote]
就是说 如果我这个父类是有参的 那么子类也都要有参 如果子类无参的话 就不知道要调用父类的那个构造方法了 我这样理解对嘛??

不是不知道要调用父类的那个构造方法了。是你父类没有这个构造方法。你定义了构造方法以后。就只能调用你写出来的构造方法。系统不会帮你构造空的构造方法了。所以你写了构造方法以后就必须调用你写的构造方法!
猫儿爷爷 2010-03-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 amos1989 的回复:]
本来列,当你创建一个类的时候 如果不给他写构造函数时,系统会默认帮他构建一个空的构造函数。所以当有子类继承这个类的时候,就会继承他的这个空的构造的函数,你现在自己写了一个有参的构造函数,系统就不会帮他构建空构造函数了,所以你必须加上一个空的构造函数。这也是一个习惯。。反应到代码中:
在Employee 类,增加如下
Employee(){} 就可以了
[/Quote]就是说 如果我这个父类是有参的 那么子类也都要有参 如果子类无参的话 就不知道要调用父类的那个构造方法了 我这样理解对嘛??
猫儿爷爷 2010-03-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 py330316117 的回复:]
只有一个问题问楼主,你没有public类和main函数怎么运行???
还是你给的只是部分代码
[/Quote]肯定是部分代码了 闷闷 main方法 那里没错 所以就没贴出来。。。。。。闷闷
py330316117 2010-03-28
  • 打赏
  • 举报
回复
只有一个问题问楼主,你没有public类和main函数怎么运行???
还是你给的只是部分代码
amos1989 2010-03-28
  • 打赏
  • 举报
回复
本来列,当你创建一个类的时候 如果不给他写构造函数时,系统会默认帮他构建一个空的构造函数。所以当有子类继承这个类的时候,就会继承他的这个空的构造的函数,你现在自己写了一个有参的构造函数,系统就不会帮他构建空构造函数了,所以你必须加上一个空的构造函数。这也是一个习惯。。反应到代码中:
在Employee 类,增加如下
Employee(){} 就可以了
猫儿爷爷 2010-03-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 serbry0033 的回复:]
主义构造方法的访问权限啊
[/Quote]恩 我给构造方法public 也一样是那个错误啊
serbry0033 2010-03-28
  • 打赏
  • 举报
回复
主义构造方法的访问权限啊
猫儿爷爷 2010-03-28
  • 打赏
  • 举报
回复
他编译的时候他说Employee.java:64: 找不到符号
符号: 构造函数 Employee()
位置: 类 Employee
{
^
Employee.java:89: 找不到符号
符号: 构造函数 Employee()
位置: 类 Employee
{
^
Employee.java:134: 找不到符号
符号: 构造函数 Employee()
位置: 类 Employee
{
^
Employee.java:170: 找不到符号
符号: 构造函数 SalesEmployee()
位置: 类 SalesEmployee
{
^
4 错误

是什么原因啊 我那个大括号都该了的啊 不怎么就错了呢啊

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧