《java入门第一季》之面向对象综合小案例
需求:
/*
教练和运动员案例
乒乓球运动员和篮球运动员。
乒乓球教练和篮球教练。
跟乒乓球相关的人员都需要学习英语。
分析,这个案例中有哪些抽象类,哪些接口,哪些具体类。
整个分析过程,由图片展示。
*/
代码如下:
interface SpeakEnglish {
//说英语
public abstract void speak();
} //定义人的抽象类
abstract class Person {
private String name;
private int age; public Person() {} public Person(String name,int age) {
this.name = name;
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} //睡觉
public void sleep() {
System.out.println("人都是要睡觉的");
} //吃饭
public abstract void eat();//吃的不一样,抽象方法
} //定义运动员(抽象类)
abstract class Player extends Person {
public Player() {} public Player(String name,int age) {
super(name,age);
}
//这里会继承父类吃饭功能
//学习
public abstract void study();//运动员学习内容不一样,抽取为抽象
} //定义教练(抽象类)
abstract class Coach extends Person {
public Coach() {} public Coach(String name,int age) {
super(name,age);
}
//教
public abstract void teach();//教练教的不一样,抽象方法
} //乒乓球运动员
class PingPangPlayer extends Player implements SpeakEnglish {
public PingPangPlayer(){} public PingPangPlayer(String name,int age) {
super(name,age);
} //吃
public void eat() {
System.out.println("乒乓球运动员吃大白菜,喝小米粥");
} //学习
public void study() {
System.out.println("乒乓球运动员学习如何发球和接球");
} //说英语,对于接口抽象方法的具体重写
public void speak() {
System.out.println("乒乓球运动员说英语");
}
} //定义篮球运动员具体类
class BasketballPlayer extends Player {//不需要继承接口,因为他不需要说英语
public BasketballPlayer(){} public BasketballPlayer(String name,int age) {
super(name,age);
} //吃
public void eat() {
System.out.println("篮球运动员吃牛肉,喝牛奶");
} //学习
public void study() {
System.out.println("篮球运动员学习如何运球和投篮");
}
} //定义乒乓球教练具体类
class PingPangCoach extends Coach implements SpeakEnglish {
public PingPangCoach(){} public PingPangCoach(String name,int age) {
super(name,age);
} //吃
public void eat() {
System.out.println("乒乓球教练吃小白菜,喝大米粥");
} //教
public void teach() {
System.out.println("乒乓球教练教如何发球和接球");
} //说英语 对于接口抽象方法的具体重写
public void speak() {
System.out.println("乒乓球教练说英语");
}
} //定义篮球教练具体类
class BasketballCoach extends Coach {
public BasketballCoach(){} public BasketballCoach(String name,int age) {
super(name,age);
} //吃
public void eat() {
System.out.println("篮球教练吃羊肉,喝羊奶");
} //教
public void teach() {
System.out.println("篮球教练教如何运球和投篮");
}
} class InterfaceDemo {
public static void main(String[] args) {
//测试运动员(乒乓球运动员和篮球运动员)
//乒乓球运动员
PingPangPlayer ppp = new PingPangPlayer();//自己类实现
ppp.setName("王浩");
ppp.setAge(33);
System.out.println(ppp.getName()+"---"+ppp.getAge());
ppp.eat();
ppp.sleep();
ppp.study();
ppp.speak();
System.out.println("----------------");
//通过带参构造给数据
ppp = new PingPangPlayer("张继科",27);
System.out.println(ppp.getName()+"---"+ppp.getAge());
ppp.eat();
ppp.sleep();
ppp.study();
ppp.speak();
System.out.println("----------------"); //篮球运动员
BasketballPlayer bp = new BasketballPlayer();
bp.setName("姚明");
bp.setAge(34);
System.out.println(bp.getName()+"---"+bp.getAge());
bp.eat();
bp.sleep();
bp.study();
//bp.speak(); //没有该方法,所以会报错
System.out.println("----------------");
//通过带参构造给数据
bp = new BasketballPlayer("易建联",31);
System.out.println(bp.getName()+"----"+bp.getAge());
bp.eat();
bp.sleep();
bp.study();
System.out.println("----------------"); //乒乓球教练
PingPangCoach ppc = new PingPangCoach();
ppc.setName("杨道龙");
ppc.setAge(24);
System.out.println(ppc.getName()+"---"+ppc.getAge());
ppc.eat();
ppc.sleep();
ppc.teach();
ppc.speak();
System.out.println("----------------");
//通过带参构造给数据
ppc = new PingPangCoach("老K教练",56);
System.out.println(ppc.getName()+"---"+ppc.getAge());
ppc.eat();
ppc.teach();
ppc.sleep();
ppc.speak();
//篮球教练
BasketballCoach bc = new BasketballCoach();
bc.setName("杨道龙");
bc.setAge(24);
System.out.println(bc.getName()+"---"+bc.getAge());
bc.eat();
bc.sleep();
bc.teach();
//bc.speak();
bc = new BasketballCoach("李继超",34);
System.out.println(bc.getName()+"---"+bc.getAge());
bc.eat();
bc.sleep();
bc.teach();
System.out.println("----------------");
}
}
《java入门第一季》之面向对象综合小案例的更多相关文章
- 《java入门第一季》之正则表达式小案例
案例一: 判断手机号码是否满足要求 import java.util.Scanner; /* * * 需求: * 判断手机号码是否满足要求? * * 分析: * 13436975980 * 13688 ...
- 《java入门第一季》之HashSet小案例:获取10个1至20的随机数,要求随机数不能重复
这是基于HashSet集合的唯一性. /* * 编写一个程序,获取10个1至20的随机数,要求随机数不能重复. * * 分析: * A:创建随机数对象 * B:创建一个HashSet集合 ...
- 《java入门第一季》之根据小案例体会泛型
泛型在哪些地方使用呢? * 看API,如果类,接口,抽象类后面跟的有<E>就说要使用泛型.一般来说就是在集合中使用. 下面根据案例,加深体会泛型的作用. 案例一: import java. ...
- 《java入门第一季》之StringBuffer小案例
这里是针对其反转功能来举的例子,再对比之前写的一篇String类的反转功能,StringBuffer明显提高了代码量,提高了效率. import java.util.Scanner; /* * 把字符 ...
- 《java入门第一季》StringBuffer类小案例
/* * 把数组拼接成一个字符串 */ public class StringBufferTest2 { public static void main(String[] args) { // 定义一 ...
- 《java入门第一季》之Date类案例,算一算你的恋爱纪念日
想算你和你对象谈了多久了,还在用笔算吗,是不是很头疼?写个程序算一算吧!会变得如此简单. import java.text.ParseException; import java.text.Simpl ...
- JAVA入门第一季(mooc-笔记)
笔记相关信息 /** * @subject <学习与创业>作业1 * @author 信管1142班 201411671210 赖俊杰 * @className <JAVA入门第一季 ...
- Java入门第一季——从此投身Java??
找工作告一段落. 最后的工作呢,和java紧密相关,也是阴差阳错,不过都是软件开发,都好了,不过以后侧重点肯定是在java这边,php有机会还是一直学下去的,那么美的说~ Java开发第一季 一.简 ...
- 《java入门第一季》之面向对象(this和super详细分析)
此文章来自于书籍,里面介绍了this和super详细的区别.当然在后边的文章中还有涉及super的时候还会分析. Java关键字this.super使用总结 一.this Java关键字this只能用 ...
- 《java入门第一季》之面向对象(面向对象案例详解)
通过几个小案例理重新回顾一下前面所写的内容,对面向对象的理解更加深刻的目的: 案例一: /* 需求: 定义一个员工类,自己分析出几个成员, 然后给出成员变量,构造方法,getXxx()/setXxx( ...
随机推荐
- OAuth 2 深入介绍
1. 前言 2. OAuth2 角色 2.1 资源所有者(Resource Owner) 2.2 资源/授权服务器(Resource/Authorization Server) 2.3 客户端(Cli ...
- webpack4.x配置详解,多页面,多入口,多出口,新特性新坑!!
花了差不多一天多的时间,重新撸了一遍webpack4.x的常用配置. 基本上常用的配置都熟悉了一遍,总体上来讲,为了对parcel进行反击,webpack从4.x开始,正在朝着尽可能的简化配置文件的方 ...
- MPAndroidChart图形联动
MPAndroidChart图形联动 本篇基于博客MPAndroidChart的K线图上添加均线,两个MPAndroidChart是有联动效果的 原理 获取正在滑动的Chart的触摸事件,将事件同步给 ...
- Scala: 简介和安装
http://blog.csdn.net/pipisorry/article/details/52902117 Note: lz只是稍微学学,能看懂就行,不深入.适合scala小白. Scala简介 ...
- Android音频处理——通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能
Android音频处理--通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能 音频这方面很博大精深,我这里肯定讲不了什么高级的东西,最多也只是一些基础类知识,首先,我们要介绍一下 ...
- iOS使用自签名证书实现HTTPS请求
概述 在16年的WWDC中,Apple已表示将从2017年1月1日起,所有新提交的App必须强制性应用HTTPS协议来进行网络请求. 默认情况下非HTTPS的网络访问是禁止的并且不能再通过简单粗暴的向 ...
- Python动态展现之一
首先: def f(): print('first') def g(): f() g() def f(): print('second') g() 结果: >>> first sec ...
- Servlet之cookie处理
Cookies 通常设置在 HTTP 头信息中(虽然JavaScript 也可以直接在浏览器上设置一个 Cookie).设置 Cookie 的 Servlet 会发送如下的头信息: HTTP/1.1 ...
- Dynamics CRM Import Solution Attribute Display Name description is null or empty
在做解决方案导入的时候遇到错误,下载错误xml信息后查询报错如下:"Attribute Display Name description is null or empty",字面意 ...
- 创建银行API
DECLARE lc_output VARCHAR2(3000); lc_msg_dummy VARCHAR2(3000); lc_return_status VARCHAR2(3000); lc_m ...