/*1. 定义一个表示“雇员”(Employee)的类,要求Employee类的定义中有如下的成员变量和方法:
a) 成员变量:name、age、salary(工资)
b) 提供构造方法
c) 提供设置工资的方法setSalary
2. 各种类型的雇员,不同类型的雇员按不同的支付方式支付工资:经理(Manager)每月获得一份固定的工资;
销售人员(Salesman)在基本工资的基础上每月还有销售提成;一般工人(Worker)则按它每月工作的天数计算工资。请以继承的方式设计公司雇员的类层次。
提示:按需求,子类要新定义成员变量和成员方法,子类需要重写setSalary方法
*/
class EmpliyeeA
{
String name;
int age;
double salary;//年龄和工资
EmpliyeeA(int a){
age=a;
}
public void setSalary(double salary) {
//this.salary = salary;
System.out.println("调用父类函数设置工资为"+salary);
}
}
class Manager extends EmpliyeeA//经理类继承雇员类
{
Manager(){
super(21);
}
public void setSalary(double salary) {
this.salary =salary*2;
System.out.println("经理的工资是"+salary);
}
}
class Salesman extends EmpliyeeA
{
double extra=1;//额外提成
Salesman(){
super(25);
}
public void setSalary(double ext) {
this.salary = 2000;
this.salary=this.salary*ext;
System.out.println("销售人员的工资是"+salary);
}
}
class Worker extends EmpliyeeA
{
int day;
public Worker() {
// TODO Auto-generated constructor stub
super(30);
}
public void setSalary(double day) {
this.salary = 80;//一天80元
this.salary=this.salary*day;
System.out.println("工人的工资是"+salary);
}
}
public class Employee {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Manager s1=new Manager();
Salesman s2=new Salesman();
Worker s3=new Worker();
s1.setSalary(100);
s2.setSalary(1.3);
s3.setSalary(25);
}
}
////为嘛我在经理类上定义了设置工资的函数,输入100输出应该是200。。怎么输出还是100,但显示的却是经理的工资
继承、
------解决方案--------------------
public void setSalary(double salary) {
this.salary =salary*2;
System.out.println("经理的工资是"+salary);
}
上面的方法里,salary就是给传进去的值 100。 要想得到200, 要用this.salary.
------解决方案--------------------
+
顺便说一句好久没见,是南方征雁吧?
------解决方案--------------------
典型的面向对象模型,代码如下:
基类Employee.java
public class Employee {
private String name; //姓名