1 package com.bytezreo.template;
2
3 import java.util.Calendar;
4 import java.util.Scanner;
5
6 /**
7 *
8 * @Description 抽象类 练习
9 * @author Bytezero·zhenglei! Email:420498246@qq.com
10 * @version
11 * @date 下午2:50:49
12 * @
13 *
14 */
15 public class PayrollSystem {
16
17 public static void main(String[] args) {
18
19 //方式一:
20 // Scanner scanner = new Scanner(System.in);
21 // System.out.println("请输入当月的月份:");
22 // int month = scanner.nextInt();
23
24 //方式二
25 Calendar calendar = Calendar.getInstance();
26 int month =calendar.get(Calendar.MONTH); //获取当前的月份
27 System.out.println(month+1); //一月份 0
28
29
30
31
32 Employee[] emps = new Employee[2];
33
34 emps[0] = new SalariedEmployee("Tom", 1002, new MyDate(2000, 3, 15),10000);
35 emps[1] = new HourlyEmployee("jery", 2001, new MyDate(2001,10, 17),60,240);
36
37 for(int i =0; i <emps.length;i++) {
38 System.out.println(emps[i]);
39
40 double salary =emps[i].earnings();
41 System.out.println("月工资为:" + salary);
42
43 if((month+1) == emps[i].getBirthady().getMonth()) {
44 System.out.println("生日快乐!奖励100元");
45 }
46
47
48 }
49
50 }
51 }
 1 package com.bytezreo.template;
2
3 /**
4 *
5 * @Description
6 * @author Bytezero·zhenglei! Email:420498246@qq.com
7 * @version
8 * @date 下午2:23:00
9 * @
10 *
11 */
12 public abstract class Employee {
13 private String name;
14 private int number;
15 private MyDate birthady;
16
17
18 public Employee(String name, int number, MyDate birthady) {
19 super();
20 this.name = name;
21 this.number = number;
22 this.birthady = birthady;
23 }
24
25 public String getName() {
26 return name;
27 }
28
29 public void setName(String name) {
30 this.name = name;
31 }
32
33 public int getNumber() {
34 return number;
35 }
36
37 public void setNumber(int number) {
38 this.number = number;
39 }
40
41 public MyDate getBirthady() {
42 return birthady;
43 }
44
45 public void setBirthady(MyDate birthady) {
46 this.birthady = birthady;
47 }
48
49 public abstract double earnings();
50
51 @Override
52 public String toString() {
53 return "name=" + name + ", number=" + number + ", birthady=" + birthady.toDateString();
54 }
55
56
57
58 }
 1 package com.bytezreo.template;
2
3
4 public class SalariedEmployee extends Employee{
5
6 private double monthlySalary; //月工资
7
8 public SalariedEmployee(String name, int number, MyDate birthady) {
9 super(name, number, birthady);
10
11 }
12
13 public SalariedEmployee(String name, int number, MyDate birthady,double monthlySalary) {
14 super(name, number, birthady);
15 this.monthlySalary = monthlySalary;
16 }
17
18
19 public double getMonthlySalary() {
20 return monthlySalary;
21 }
22
23
24 public void setMonthlySalary(double monthlySalary) {
25 this.monthlySalary = monthlySalary;
26 }
27
28
29 @Override
30 public double earnings() {
31
32 return monthlySalary;
33 }
34
35 public String toString() {
36 return "SalariedEmployee[ " +super.toString()+"]";
37 }
38
39
40
41
42
43 }
 1 package com.bytezreo.template;
2
3
4 public class HourlyEmployee extends Employee {
5
6 private int wage; //每小时的工资
7 private int hour; //月工作的小时数
8
9 public HourlyEmployee(String name, int number, MyDate birthady) {
10 super(name, number, birthady);
11
12 }
13
14 public HourlyEmployee(String name, int number, MyDate birthady,int wage,int hour) {
15 super(name, number, birthady);
16 this.wage = wage;
17 this.hour = hour;
18 }
19
20
21 public int getWage() {
22 return wage;
23 }
24
25 public void setWage(int wage) {
26 this.wage = wage;
27 }
28
29 public int getHour() {
30 return hour;
31 }
32
33 public void setHour(int hour) {
34 this.hour = hour;
35 }
36
37 @Override
38 public double earnings() {
39
40 return wage * hour;
41 }
42
43
44 public String toString() {
45 return "HourlyEmployee[ " +super.toString()+"]";
46 }
47
48 }

Java 抽象类 练习的更多相关文章

  1. java抽象类

    Java 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不 ...

  2. Java接口、Java抽象类、C++抽象类的区别

    由于这三种数据类型都是为了创建类层次结构的顶层构架,且用法有些许相似之处,这里简单区分一下: 接口: 接口用interface关键字定义, 名字一般使用-able形式的形容词. 接口通常定义抽象方法和 ...

  3. java抽象类与接口的区别及用法

    java抽象类与接口的区别及用法 一.抽象类里面的方法可以有实现,但是接口里面的方法确是只能声明. 二.接口是设计的结果 :抽象类是重构的结果 . 三.java不支持多重继承,所以继承抽象类只能继承一 ...

  4. Java 抽象类与接口总结

    一.为什么要使用抽象类?有什么好处? 抽象类是通用接口.不同的子类可以用不同的方法表示此接口.通用接口建立起一种基本形式,以此表示所有子类的共同部分. 必须覆写父类abstract抽象的方法  含有抽 ...

  5. JAVA抽象类和接口的深入探讨

    Java 语言中,抽象类(abstract class) 和接口(interface) 是抽象思想的两种体现形式.初学者很容易把这两者搞混,所以Java面试中考抽象类和接口的区别的面试题也常有出现的. ...

  6. java抽象类和接口的区别(转载)

    1.Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用. 如果向一个抽象类里加入 ...

  7. 我对面向对象设计的理解——Java接口和Java抽象类

    在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解. 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有 ...

  8. 第十八节:详解Java抽象类和接口的区别

    前言 对于面向对象编程来说,抽象是它的特征之一. 在Java中,实现抽象的机制分两种,一为抽象类,二为接口. 抽象类为abstract class,接口为Interface. 今天来学习一下Java中 ...

  9. Java抽象类和接口的比较

    一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体 ...

  10. Java - 23 Java 抽象类

    Java 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不 ...

随机推荐

  1. KubeSphere2.1踩坑记

    至少两台机器.推荐4X16.(完全安装KubeSphere会吃掉10G+内存) k8s安装(略1.14.8)可参考我上一篇文章或者基于kubeadmin快速安装 KubeSphere2.1前置条件 1 ...

  2. python2和python3的版本历史及入门书籍

    python版本历史 我们端游项目使用是python2.7版本 32位 python2 2.7.18 last version on 2020.4.20 2.7 first version on 20 ...

  3. Django笔记四十二之model使用validator验证器

    本文首发于公众号:Hunter后端 原文链接:Django笔记四十二之model使用validator验证器 这一篇笔记介绍一下 model 里的 validator 验证器. 首先,这是个什么东西呢 ...

  4. 2.7 CE修改器:多级指针查找

    在本步骤中,你需要使用多级指针的概念来查找健康值真正的地址并修改它.多级指针就是一个指针的指针,也就是第一个指针指向第二个指针,第二个指针指向第三个指针,以此类推,最终指向你想要访问的地址. 首先,你 ...

  5. C/C++ Qt 命令行版网络通信

    通常情况下Qt如果需要建立网络通信则必须依附于图形界面,但如果是新手入门,图形界面则显得太过于繁琐不利于学习原理,如下本人实现了命令行版本的网络通信案例,能够让读者更好的理解Qt是如何创建网络通信套接 ...

  6. Nebula Siwi:基于图数据库的智能问答助手思路分析

      本文重点分析 Nebula Siwi 智能问答思路,具体代码可参考[2],使用的数据集为 Basketballplayer[3].部分数据和 schema 如下所示: 一.智能问答可实现的功能 1 ...

  7. Java并发(十)----线程之守护线程

    默认情况下,Java 进程需要等待所有线程都运行结束,才会结束.有一种特殊的线程叫做守护线程,只要其它非守护线程运行结束了,即使守护线程的代码没有执行完,也会强制结束. 例: log.debug(&q ...

  8. 深入研究Delimiter,发现Delimiter 是自动合并重复的。

    即使加上: MyList.StrictDelimiter := True; 也自动合并相邻的重复的.这点有好处也有坏处,坏处 暂时 还没有想到. -------------- 浙江省 绍兴市 越城区 ...

  9. Embedding 模型部署及效果评测

    写在前面 最近大模型发展迅速,与之对应的向量化需求也被带动起来了,由此社区也衍生出很多模型,本文选几款,简单做下评测. 前置概念 为方便读者,先简单介绍几个概念. 概念1:Vector Embeddi ...

  10. Swoole从入门到入土(13)——HTTP服务器[配置]

    开篇之前,先复习一下如何为一个server进行配置的设置: $server->set(array( 'key' => 'value' )); 配置说明: upload_tmp_dir:设置 ...