面向对象编程:继承-实例分析

 1 package employee;
2
3 public class CommissionEmployee {
4 private String firstName;
5 private String lastName;
6 private String socialSecurityNumber;
7 private double grossSales;
8 private double commissionRate;
9
10 public CommissionEmployee(String first,String last,String ssn,double sales,double rate){
11 firstName=first;
12 lastName=last;
13 socialSecurityNumber=ssn;
14 setGrossSales(sales);
15 setCommissionRate(rate);
16 System.out.printf(" CommissionEmployee constructor \n%s\n",this);
17 }
18
19 public void setFirstName(String first){
20 firstName=first;
21 }
22
23 public String getFirstName(){
24 return firstName;
25 }
26
27
28
29 public void setLastName(String last){
30 lastName=last;
31 }
32
33 public String getLastName(){
34 return lastName;
35 }
36
37
38
39
40 public void setSocialSecurityNumber(String ssn){
41 socialSecurityNumber=ssn;
42 }
43
44 public String getSocialSecurityNumber(){
45 return socialSecurityNumber;
46 }
47
48
49
50
51 public void setGrossSales(double sales){
52 grossSales=(sales<0.0)?0.0:sales;
53 }
54
55 public double getGrossSales(){
56 return grossSales;
57 }
58
59
60
61
62 public void setCommissionRate(double rate){
63 commissionRate=(rate>0.0&&rate<1.0)?rate:0.0;
64 }
65
66 public double getCommissionRate(){
67 return commissionRate;
68 }
69
70
71 public double earnings(){
72 return getCommissionRate()*getGrossSales();
73 }
74
75
76 public String toString(){
77 return String.format("%s: %s %s\n%s: %s\n%s: %.2f\n%s: %.2f",
78 "commission employee",getFirstName(),getLastName(),
79 "social security name",getSocialSecurityNumber(),
80 "gross sales",getGrossSales(),
81 "commission rate",getCommissionRate());
82 }
83 }
a.格式描述符: 

1. L或l - 使数字左对齐(缺省是右对齐)
2. C或c - 使数字居中对齐(缺省是右对齐)
3. X或x - 显示数字为十六进制(缺省是十进制)
4. B或b - 显示数字为八进制(缺省是十进制)
5. ,(半角逗号)- 千位分隔符
6. S或s - 显示数字为科学记数法
7. Z或z - 用零填空位(缺省是空格)
8. w.d (两个整数用半角句号隔开)- 指定输出域宽及精度

b. "fillChar"是填空位符(缺省为空格)
--你可以用MyOut.fillChar = '*'或'$'来定义你自己的空位符

 1 package employee;
2 //继承最好写法:超类中定义private变量及其set get方法,子类中通过set get方法访问变量
3 public class BasePlusCommissionEmployee extends CommissionEmployee {
4 private double baseSalary;
5 //构造函数不能继承,但是在子类构造函数内部第一条显性或隐性地调用了超类构造函数进行初始化等操作
6 public BasePlusCommissionEmployee(String first,String last,String ssn,double sales,double rate,double salary){
7 super(first,last,ssn,sales,rate);//通过超类构造函数调用语法super()显示调用CommissionEmployee的实参数构造函数
8 setBaseSalary(salary);
9
10 System.out.printf(" BasePlusCommissionEmployee constructor\n %s\n",this);
11 }
12
13 public void setBaseSalary(double salary){
14 baseSalary=(salary>0.0)?salary:0.0;
15 }
16
17 public double getBaseSalary(){
18 return baseSalary;
19 }
20
21 public double earnings(){
22 return getBaseSalary()+super.earnings();//在子类中调用被覆盖的超类的方法用super。方法名
23 }
24
25
26 public String toString(){
27 return String.format("%s %s\n%s: %.3f","base-salaried",super.toString(),"base salary",getBaseSalary());
28 //不可以写成%0.2f,只能写成%。2f,输出2位小数点,若是int型,可以写成%04d,输出4个占位符。默认向右对齐,用0补齐
29
30 }
31
32
33 }
 1 package employee;
2
3 public class BasePlusCommissionEmployeeTest {
4
5 public static void main(String[] args) {
6 BasePlusCommissionEmployee employee=new BasePlusCommissionEmployee("Bob","Lewis","222-22-22222",5000,0.04,300);
7 System.out.println("Employee information obtained by get methods:\n");
8 System.out.printf("%s %s\n", "First name is",employee.getFirstName());
9 System.out.printf("%s %s\n", "Last name is",employee.getLastName());
10 System.out.printf("%s %s\n", "Social security number is",employee.getSocialSecurityNumber());
11 System.out.printf("%s %.3f\n", "Gross sales is",employee.getGrossSales());
12 System.out.printf("%s %.3f\n", "Commission rate is",employee.getCommissionRate());
13 System.out.printf("%s %.3f\n", "Base salary is",employee.getBaseSalary());
14
15 employee.setBaseSalary(1000);
16 System.out.printf("\n%s:\n\n%s\n","Updated employee information obtained by toString",employee.toString());
17 }
18
19 }

运行结果:

 1  CommissionEmployee constructor 
2 base-salaried commission employee: Bob Lewis
3 social security name: 222-22-22222
4 gross sales: 5000.00
5 commission rate: 0.04
6 base salary: 0.000
7 BasePlusCommissionEmployee constructor
8 base-salaried commission employee: Bob Lewis
9 social security name: 222-22-22222
10 gross sales: 5000.00
11 commission rate: 0.04
12 base salary: 300.000
13 Employee information obtained by get methods:
14
15 First name is Bob
16 Last name is Lewis
17 Social security number is 222-22-22222
18 Gross sales is 5000.000
19 Commission rate is 0.040
20 Base salary is 300.000
21
22 Updated employee information obtained by toString:
23
24 base-salaried commission employee: Bob Lewis
25 social security name: 222-22-22222
26 gross sales: 5000.00
27 commission rate: 0.04
28 base salary: 1000.000





转载于:https://www.cnblogs.com/suixinsuoyu/archive/2011/11/28/2266769.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值