在面向对象这个专题的最后

结合前面多篇文章,用到了面向对象的很多方面知识,做了一个简单的案例:

饭店案例:

package hotel;

/*
* 酒店的员工类
* 员工共同特点:姓名,工号,工作方法
*/
public class Employee {
private String name;
private String id; // 注意:实际开发中,需要提供给用户两套构造方法
// 一套空参,一套有参 public Employee() {
} public Employee(String name, String id) {
this.name = name;
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
}
}
package hotel;

/*
* 酒店的VIP服务
* 厨师和服务员
*/
public interface VIP {
public abstract void services();
}
package hotel;

/*
* 厨师类
* 继承员工类,实现VIP接口
*/
public class Chef extends Employee implements VIP { public Chef() {
super();
} public Chef(String name, String id) {
super(name, id);
} public void work() {
System.out.println("厨师在炒菜");
} public void services() {
System.out.println("为VIP做精致的菜");
}
}
package hotel;

/*
* 服务员类:
* 继承员工类,实现VIP接口
*/
public class Waiter extends Employee implements VIP { public Waiter() {
super();
} public Waiter(String name, String id) {
super(name, id);
} public void work() {
System.out.println("服务员在上菜");
} public void services() {
System.out.println("服务员为VIP特殊服务");
}
}
package hotel;

/*
* 定义经理类:
* 继承员工类,没有VIP功能
* 自己有奖金属性
*/
public class Manager extends Employee { public Manager() {
super();
} public Manager(String name, String id, double money) {
super(name, id);
this.money = money;
} private double money; public void work() {
System.out.println("经理在管理酒店");
} }
package hotel;

import javax.swing.text.ChangedCharSetException;

public class Test {
public static void main(String[] args) {
//创建一个经理,两个服务员,两个厨师
Manager m1 = new Manager("张三","经理001",6666.66);
m1.work();
Waiter w1 = new Waiter("小明", "服务员001");
Waiter w2 = new Waiter("小红", "服务员002");
w1.work();
w1.services();
w2.work();
w2.services();
Chef c1 = new Chef("李四","厨师001");
Chef c2 = new Chef("王五","厨师002");
c1.work();
c1.services();
c2.work();
c2.services();
}
}
/*
输出:
经理在管理酒店
服务员在上菜
服务员为VIP特殊服务
服务员在上菜
服务员为VIP特殊服务
厨师在炒菜
为VIP做精致的菜
厨师在炒菜
为VIP做精致的菜
*/

最新文章

  1. EHcache缓存框架详解
  2. python注释
  3. sublime text 3 or sublime text 2 安装install package control
  4. h264
  5. SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-004-使用AspectJ’s pointcut expression language定义Pointcut
  6. 用CRTP在C++中实现静态函数的多态
  7. Android菜单详解(四)——使用上下文菜单ContextMenu
  8. Google map v3 using simple tool file google.map.util.js v 1.0
  9. spring整合JMS - 基于ActiveMQ实现
  10. logrotate异常排查
  11. vue中v-for的使用
  12. linux grep (linux查找关键字在php出现的次数)
  13. 转载:2.1 运行中的Nginx进程间的关系《深入理解Nginx》(陶辉)
  14. C++调用openssl库生成RSA加密秘钥对
  15. 在Hue中提交oozie定时任务
  16. 测试用例脚本,调用其他模块方法的实例(数据分类 appium 和 selenium 看这里)
  17. Visual Studio配置C/C++-PostgreSQL(9.6.3)开发环境(ZT)
  18. [Angularjs]cookie操作
  19. MikroTik RouterOS官方教程Wiki(入门教程)
  20. Digital Image Processing 学习笔记1

热门文章

  1. A. Arrays(Codeforces Round #317 水题)
  2. Linux禁用显示“缓冲调整”
  3. spool命令、创建一个表,创建而且copy表,查看别的用户下的表,rowid行地址 索引的时候使用,表的增删改查,删除表,oracle的回收站
  4. 自学Zabbix3.4-资产清单inventory
  5. java集合框架(Collections Framework)
  6. 翻译:CREATE DATABASE语句
  7. 基于python的web应用开发-添加关注者
  8. [原创]mysql的zip包如何在windows下安装
  9. jQuery架构(源码)分析
  10. iOS 蓝牙开发资料记录