Java 抽象类 练习
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 抽象类 练习的更多相关文章
- java抽象类
Java 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不 ...
- Java接口、Java抽象类、C++抽象类的区别
由于这三种数据类型都是为了创建类层次结构的顶层构架,且用法有些许相似之处,这里简单区分一下: 接口: 接口用interface关键字定义, 名字一般使用-able形式的形容词. 接口通常定义抽象方法和 ...
- java抽象类与接口的区别及用法
java抽象类与接口的区别及用法 一.抽象类里面的方法可以有实现,但是接口里面的方法确是只能声明. 二.接口是设计的结果 :抽象类是重构的结果 . 三.java不支持多重继承,所以继承抽象类只能继承一 ...
- Java 抽象类与接口总结
一.为什么要使用抽象类?有什么好处? 抽象类是通用接口.不同的子类可以用不同的方法表示此接口.通用接口建立起一种基本形式,以此表示所有子类的共同部分. 必须覆写父类abstract抽象的方法 含有抽 ...
- JAVA抽象类和接口的深入探讨
Java 语言中,抽象类(abstract class) 和接口(interface) 是抽象思想的两种体现形式.初学者很容易把这两者搞混,所以Java面试中考抽象类和接口的区别的面试题也常有出现的. ...
- java抽象类和接口的区别(转载)
1.Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用. 如果向一个抽象类里加入 ...
- 我对面向对象设计的理解——Java接口和Java抽象类
在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解. 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有 ...
- 第十八节:详解Java抽象类和接口的区别
前言 对于面向对象编程来说,抽象是它的特征之一. 在Java中,实现抽象的机制分两种,一为抽象类,二为接口. 抽象类为abstract class,接口为Interface. 今天来学习一下Java中 ...
- Java抽象类和接口的比较
一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体 ...
- Java - 23 Java 抽象类
Java 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不 ...
随机推荐
- docker 推送镜像到harbor
服务器A的镜像要推送到已安装harbor的服务器B 1.修改服务器A的/etc/docker/daemon.json文件 其中,http://211.131.241.221:8888为你要推送的服务器 ...
- Mysql 为现有数据生成Guid
GUID 全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中. ...
- C/C++ 通过HTTP实现文件上传下载
WinInet(Windows Internet)是 Microsoft Windows 操作系统中的一个 API 集,用于提供对 Internet 相关功能的支持.它包括了一系列的函数,使得 Win ...
- 4599元 铭凡推出NAG6迷你主机:12代i9+RX 6600M
铭凡推出了新款迷你主机NAG6,首发价4599元. 据了解,新款迷你主机的处理器采用的是i9-12900H,14核心20线程.24MBL3缓存,最高睿频达5.0GHz. 不仅如此,新款迷你主机内置RX ...
- ch583/ch582/ch573/ch571 central(主机)程序
本程序是在CH582m上运行的, 一.主从连接 主机这里可以根据从机的MAC地址进行连接.static uint8_t PeerAddrDef[B_ADDR_LEN] = {0x02, 0x02, 0 ...
- 手把手带你上手swagger3
配置POM 只需要加一个依赖,并且要注意,swagger3在springboot2.5版本以上会出现问题 <dependency> <groupId>io.springfox& ...
- SpringBoot-MyBatis - Java枚举类型 <---> MySQL Int,建立 类型处理器(typeHandlers)
场景: MySQL里的某一个字段,比如:status状态,一共有5个状态,我们会在MySQL里 建立 status(int)字段,1.2.3.4.5 来标记5种状态:利用MyBatis在自动代码生成器 ...
- Excel-批量填充数字
1.一般情况下,都是使用鼠标左右键拖动来实现数据的填充的 2.但是填充1200列,下拉拖动就非常麻烦,可以首先定位到A200. 在屏幕左侧中央处找到剪切板下方的"A1"字样,鼠标单 ...
- Linux-RAID类型介绍、创建、彻底删除
一.RAID(磁盘阵列) 1.1.RAID概念 RAID简称为独立冗余磁盘阵列,把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术, ...
- MySQL优化技术系列-谓词下推(pushdown)
谓词下推 将外层查询块的 WHERE 子句中的谓词移入所包含的较低层查询块(例如视图),从而能够提早进行数据过滤以及有可能更好地利用索引. 这在分区数据库环境中甚至更为重要,其原因在于,提早进行过滤有 ...