Java学习笔记:继承与多态
来源:互联网 发布:ug8.0编程视频 编辑:程序博客网 时间:2024/05/16 01:47
Java学习笔记:继承与多态
在这个星期的Java课实验课中,实验内容是继承与多态,当我刚看到题目时,竟然不知道该从何处下手,最近一个月在忙着做安卓,一直也没写博客学习笔记,Java也没怎么认真看,一个暑假的学习竟然忘了不少,实在是捡了芝麻丢了西瓜。在思考了一个多小时之后,并且是在把书中关于继承与多态的部分又看了一遍后,才终于有了思路。好了废话不多说,让我们看一下这道题。
Cola公司的雇员分为以下若干类:(知识点:多态)
(1) ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工的生日月份。
方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100 元。
(2) SalariedEmployee : ColaEmployee 的子类,拿固定工资的员工。
属性:月薪
(3) HourlyEmployee :ColaEmployee 的子类,按小时拿工资的员工,每月工作超出160 小时的部分按照1.5 倍工资发放。
属性:每小时的工资、每月工作的小时数
(4) SalesEmployee :ColaEmployee 的子类,销售人员,工资由月销售额和提成率决定。
属性:月销售额、提成率
(5) 定义一个类Company,在该类中写一个方法,调用该方法可以打印出某月某个员工的工资数额,写一个测试类TestCompany,在main方法,把若干各种类型的员工放在一个ColaEmployee 数组里,并单元出数组中每个员工当月的工资。
在刚开始拿到这道题时,我在如何写Company类处卡住了,不知道在TestCompany类中如何去调用Company中的方法,不知道Company类中的打印工资的方法该怎么写,当时我想的是,因为ColaEmloyee数组储存的是不同种类型的数据,虽然整个数组是ColaEmployee类的,可以Company类中的方法定义一个ColaEmployee的形参,但又该怎么输出呢,因为每种员工的工资计算方式是不一样的,所以我就在这里卡住了。但我在看了一遍书后,才想起来可以在ColaEmployee类中写一个getSalary()输出奖励的工资,然后在ColaEmployee的子类中,即各类员工的类中去通过使用Override来重载父类中的getSalary方法,同时通过super调用父类的getSalary方法来输出奖励工资,而同时又能根据不同员工的类型来输出工资,然后再在Company方法中去调用对象的getSalary方法。
代码如下:
ColaEmployee类:
public class ColaEmployee {public String name;public int birth;public double getSalary(int month){double s=0;if(this.birth==month){s=100;}return s;}}
public class SalariedEmployee extends ColaEmployee{public double salary_month;@Overridepublic double getSalary(int month){return salary_month + super.getSalary(month); }}
HourlyEmployee类:
public class HourlyEmployee extends ColaEmployee{public double salary_hour;public double hour;@Overridepublic double getSalary(int month){ if (hour > 160) { return (float) (salary_hour * 160 + (hour - 160) * salary_hour * 1.5 + super.getSalary(month)); } else { return salary_hour * hour + super.getSalary(month); } }}
public class SalesEmployee extends ColaEmployee{public double sale_month;public double percent;@Override public double getSalary(int month) { return sale_month * percent + super.getSalary(month); }}
Company类:
import java.util.Scanner;public class Company {public void output_money(ColaEmployee coe[],int Month){for(int i=0;i<coe.length;i++){double gs=coe[i].getSalary(Month);System.out.println(Month+"月"+coe[i].name+"的工资是"+gs);}}}
TestCompany类:
import java.util.Scanner;public class TestCompany {public static void main(String[] args){Company c=new Company();Scanner i=new Scanner(System.in);System.out.print("请输入要查询的月份:");int m=i.nextInt();SalariedEmployee ade=new SalariedEmployee();SalesEmployee se=new SalesEmployee();HourlyEmployee he=new HourlyEmployee();ColaEmployee[] ce=new ColaEmployee[]{ade,se,he};ade.birth=1;ade.name="张三";ade.salary_month=2000;se.sale_month=1000;se.birth=2;se.name="李四";se.percent=0.5;he.birth=3;he.name="王五";he.hour=200;he.salary_hour=10;c.output_money(ce, m);i.close();}}
- Java学习笔记:继承与多态
- 【Java学习笔记】基础知识学习10【继承与多态】
- java jdk7学习笔记:继承与多态
- java核心技术学习笔记7---继承与多态
- 黑马程序员-------java学习笔记之继承与多态
- java学习笔记3_继承与多态
- Java学习笔记(4): 继承与多态
- 继承与多态学习笔记
- C++学习笔记--继承与多态
- [学习笔记]C#继承与多态
- Java学习笔记---继承和多态
- 【Java学习笔记】继承和多态
- java学习笔记<六>继承与组合
- java学习笔记-继承与接口
- JAVA学习笔记(十)- 封装与继承
- java 继承与组合学习笔记
- Java学习笔记之继承与初始化
- Java学习笔记_005_封装与继承
- 【IOS 开发学习总结-OC-56】故事板storyborad的segue
- 获取最新的、趋势性的、专业性的信息,保持竞争力
- NUC.2015.秋.队内训练赛-第一场
- Objective-C Foundation框架实践——NSMutableArray(一)
- 在Spring中缓存applicationContext
- Java学习笔记:继承与多态
- 最全的电脑快捷
- linux上配置yum源指向本地iso文件
- 仿QQ圆头像裁剪开源项目——ClipCircleHeadLikeQQ
- tomcat学习笔记之catalina.sh
- USACO 3.1 Humble Numbers
- 打印1到最大的n位数
- linux dd命令测试硬盘读写速度
- jsp、css文件一直红线警告- javax.servlet.jsp cannot be resolved 的解决办法