Java语言学习day28--8月03日
###10接口作为方法参数与返回值
* A: 接口作为方法参数
接口作为方法参数的情况是很常见的,经常会碰到。当遇到方法参数为接口类型时,那么该方法要传入一个接口实现类对象。如下代码演示。
//接口
interface Smoke{
public abstract void smoking();
}
class Student implements Smoke{
@Override
public void smoking() {
System.out.println("课下吸口烟,赛过活神仙");
}
}
//测试类
public class Test {
public static void main(String[] args) {
//通过多态的方式,创建一个Smoke类型的变量,而这个对象实际是Student
Smoke s = new Student();
//调用method方法
method(s);
}
//定义一个方法method,用来接收一个Smoke类型对象,在方法中调用Smoke对象的show方法
public static void method(Smoke sm){//接口作为参数
//通过sm变量调用smoking方法,这时实际调用的是Student对象中的smoking方法
sm.smoking();
}
}
* B: 接口作为方法返回值
接口作为方法返回值的情况,在后面的学习中会碰到。当遇到方法返回值是接口类型时,那么该方法需要返回一个接口实现类对象。如下代码演示。
//接口
interface Smoke{
public abstract void smoking();
}
class Student implements Smoke{
@Override
public void smoking() {
System.out.println("课下吸口烟,赛过活神仙");
}
}
//测试类
public class Test {
public static void main(String[] args) {
//调用method方法,获取返回的会吸烟的对象
Smoke s = method();
//通过s变量调用smoking方法,这时实际调用的是Student对象中的smoking方法
s.smoking();
}
//定义一个方法method,用来获取一个具备吸烟功能的对象,并在方法中完成吸烟者的创建
public static Smoke method(){
Smoke sm = new Student();
return sm;
}
}
###11星级酒店案例
* A: 根据“某五星级酒店,资金雄厚……都有自己的工作要做。”分析出,该题 目中包含酒店,可以把它封装成类,多名员工)。
class 员工 {
属性:姓名
属性:工号
方法:工作
}
class 厨师 extends 员工{}
class 服务员 extends 员工{}
class 经理 extends 员工 {
属性:奖金
}
员工的类型有经理、厨师、服务员,它们有共同的属性(姓名、工号、),经理额外属性(奖金)。
根据“向酒店中,增加多名员工(其中包含1名经理,1名厨师、2名服务员)”。分析出,要创建一个酒店对象,并添加4名员工到酒店对象的员工集合中。
酒店员工集合添加新员工: 经理对象
酒店员工集合添加新员工: 厨师对象
酒店员工集合添加新员工: 服务员对象
酒店员工集合添加新员工: 服务员对象
根据“获取酒店幸运员工”。分析出,从酒店员工集合随机得到一名员工对象。
1. 从酒店员工集合长度范围内,随机产生一个随机数
2. 使用该随机数作为集合的索引,返回该索引处对应的员工对象
根据“酒店开设VIP服务,酒店的厨师与服务员可以提供VIP服务。(厨师做菜加量、服务员给顾客倒酒)”。分析出,这是要增加一个VIP的接口,接口中提供个VIP服务的方法。让厨师与服务员实现该接口。
interface VIP服务{
抽象方法:服务
}
class 厨师 extends 员工 implements VIP服务{ 重写服务方法 }
class 服务员 extends 员工 implements VIP服务{ 重写服务方法 }
B:
VIP服务
public interface VIP {
public abstract void server(); //服务
}
员工
/*
* 员工:
姓名 String
工号 String
*/
public abstract class YuanGong {
// 成员变量
private String xingMing;
private String gongHao;
// 构造方法
public YuanGong() {
super();
}
public YuanGong(String xingMing, String gongHao) {
super();
this.xingMing = xingMing;
this.gongHao = gongHao;
}
// 抽象方法
public abstract void work();
// getters与setters
public String getXingMing() {
return xingMing;
}
public void setXingMing(String xingMing) {
this.xingMing = xingMing;
}
public String getGongHao() {
return gongHao;
}
public void setGongHao(String gongHao) {
this.gongHao = gongHao;
}
}
服务员
/*
* 定义员工的子类 服务员类
*/
public class FuWuYuan extends YuanGong implements VIP {
public FuWuYuan() {
super();
}
public FuWuYuan(String xingMing, String gongHao) {
super(xingMing, gongHao);
}
@Override
public void work() {
System.out.println("亲,全身心为您服务,记得给好评哦");
}
@Override
public void server() {
System.out.println("给顾客倒酒");
}
}
经理
/*
* 经理在员工的基础上,添加了奖金成员
*/
public class JingLi extends YuanGong {
private double jiangJin;
public JingLi() {
super();
}
public JingLi(String xingMing, String gongHao, double jiangJin) {
super(xingMing, gongHao);
this.jiangJin = jiangJin;
}
public double getJiangJin() {
return jiangJin;
}
public void setJiangJin(double jiangJin) {
this.jiangJin = jiangJin;
}
@Override
public void work() {
System.out.println("哪个员工让顾客不满意,我扣谁钱");
};
}
厨师
/*
* 定义员工的子类 厨师类
*/
public class ChuShi extends YuanGong implements VIP{
public ChuShi() {
super();
}
public ChuShi(String xingMing, String gongHao) {
super(xingMing, gongHao);
}
@Override
public void work() {
System.out.println("我做饭,放心吃吧,包您满意");
}
@Override
public void server() {
System.out.println("做菜加量加料");
}
}
Java语言学习day28--8月03日的更多相关文章
- Java语言学习day01--6月28日
Java语言学习day01一:Java概述 1.Java语言发展史 任职于太阳微系统的 詹姆斯·高斯林 等人于1990年代初开发Java语言的雏形,最初被命名为 Oak ,目标设置在 家用电器等小型系 ...
- Java语言学习day02--6月29日
Java语言学习day02###01常用的DOS命令 * A: 常用的DOS命令 * a: 打开Dos控制台 * win+r--cmd--回车 * b: 常用dos命令 * cd.. : 退回到上一级 ...
- Java Calendar获取年、月、日、时间
Java Calendar获取年.月.日.时间 Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00" ...
- Java语言学习day32--8月07日
###07正则表达式邮箱地址验证 * A: 正则表达式邮箱地址验证 * a: 案例代码 public class RegexDemo2 { public static void main(String ...
- Java语言学习day33--8月8日
今日内容介绍1.基本类型包装类2.System类3.Math类4.Arrays类5.大数据运算 ###01基本数据类型对象包装类概述 *A:基本数据类型对象包装类概述 *a.基本类型包装类的产生 在实 ...
- Java语言学习day15--7月21日
今日内容介绍1.Eclipse开发工具2.超市库存管理系统 ###01Eclipse的下载安装 * A: Eclipse的下载安装 * a: 下载 * http://www.eclipse.org ...
- Java语言学习总结 扩展篇 DateFormat类
DateFormat类 java.text .DateFormat 是 日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换:也就是可以在Date对象与String对象之间进 ...
- python学习 day21 (3月28日)----(抽象类 多态 nametuple dump)
不要因为走的路太久了,而忘记了为了什么而出发. 提前作准备了吗?把思维导图的东西做了吗? 和工作了几年的人,相比,是不是相同的水平,如果要写简历的话. 一边学习,一边复习. 小就是大,少就是多. 1. ...
- java语言学习笔记1
最近也在春节的节假日里,总是会有各种各样的事情出现,没有很完整的时间来学习java以及其他方面的知识. 从昨天开始有了完整的学习体系,我去娄老师推荐的极客学院网站开始学习java语言的语法.在假期之初 ...
- Python 学习日志9月20日
9月20日 周三 多大年龄了,还活得像个小孩.——急什么,人生又不长. 你习惯了思考宇宙星辰,一百年真的不长,一生也就不那么长,许多人的价值观念你也就无法理解.同样,许多人也无法理解你的价值观念,感兴 ...
随机推荐
- 内置方法 __new__ __del__
1.__new__ 构造方法 实例化对象是先执行__new__方法,但是类中没有__new__方法,所以先到父类object类中的new方法,开辟一个属于对象的空间,然后再执行init方法 设计模式: ...
- 6月16日 Django作业 文件解压缩统计行数
作业要求: 前端页面注意: 自己写的: from django.shortcuts import render, HttpResponse import zipfile import re # Cre ...
- sublime settings
{ "font_face": "Monaco", // 编辑器的字体 "font_size": 13, // 字号 "highli ...
- ModelSim10.7安装破解教程
我打算开始学习ZYNQ,所以先安装好工具ModelSim10.7,很无奈的是倒腾了一个上午也没生产license的txt文档和破解成功. 上面是破解失败的截图,下面是生成不了license,点了直接闪 ...
- Oracle :value too large for column "SCHEMA"."TABLE"."COLUMN" (actual: 519, maximum: 500)的解决方案
原因:我是使用 CREATE TABLE XXX AS subquery 进行创建的数据表,主要是将相关的数据聚合在一起,然后通过导出为SQL脚本文件,进行导入到新库中,导致部分INSERT INTO ...
- Python包装器
def func(): print("func body") def f1(arg): print("f1:",arg) def wrapper(b): pri ...
- 什么叫线程安全?servlet 是线程安全吗?
线程安全是编程中的术语,指某个函数.函数库在多线程环境中被调用时,能够 正确地处理多个线程之间的共享变量,使程序功能正确完成. Servlet 不是线程安全的,servlet 是单实例多线程的,当多个 ...
- final、finalize 和 finally 的不同之处?
final 是一个修饰符,可以修饰变量.方法和类.如果 final 修饰变量,意味着该 变量的值在初始化后不能被改变.finalize 方法是在对象被回收之前调用的方法, 给对象自己最后一个复活的机会 ...
- Spring 对 DAO 的支持?
Spring 对数据访问对象(DAO)的支持旨在简化它和数据访问技术如 JDBC, Hibernate or JDO 结合使用.这使我们可以方便切换持久层.编码时也不用担心 会捕获每种技术特有的异常.
- Effective Java —— 谨慎覆盖clone
本文参考 本篇文章参考自<Effective Java>第三版第十三条"Always override toString",在<阿里巴巴Java开发手册>中 ...