需求:

/*

    教练和运动员案例

        乒乓球运动员和篮球运动员。

        乒乓球教练和篮球教练。

        跟乒乓球相关的人员都需要学习英语。

        分析,这个案例中有哪些抽象类,哪些接口,哪些具体类。

    

    整个分析过程,由图片展示。    

*/

代码如下:

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入门第一季》之面向对象综合小案例的更多相关文章

  1. 《java入门第一季》之正则表达式小案例

    案例一: 判断手机号码是否满足要求 import java.util.Scanner; /* * * 需求: * 判断手机号码是否满足要求? * * 分析: * 13436975980 * 13688 ...

  2. 《java入门第一季》之HashSet小案例:获取10个1至20的随机数,要求随机数不能重复

    这是基于HashSet集合的唯一性. /*  * 编写一个程序,获取10个1至20的随机数,要求随机数不能重复.  *   * 分析:  * A:创建随机数对象  * B:创建一个HashSet集合 ...

  3. 《java入门第一季》之根据小案例体会泛型

    泛型在哪些地方使用呢? * 看API,如果类,接口,抽象类后面跟的有<E>就说要使用泛型.一般来说就是在集合中使用. 下面根据案例,加深体会泛型的作用. 案例一: import java. ...

  4. 《java入门第一季》之StringBuffer小案例

    这里是针对其反转功能来举的例子,再对比之前写的一篇String类的反转功能,StringBuffer明显提高了代码量,提高了效率. import java.util.Scanner; /* * 把字符 ...

  5. 《java入门第一季》StringBuffer类小案例

    /* * 把数组拼接成一个字符串 */ public class StringBufferTest2 { public static void main(String[] args) { // 定义一 ...

  6. 《java入门第一季》之Date类案例,算一算你的恋爱纪念日

    想算你和你对象谈了多久了,还在用笔算吗,是不是很头疼?写个程序算一算吧!会变得如此简单. import java.text.ParseException; import java.text.Simpl ...

  7. JAVA入门第一季(mooc-笔记)

    笔记相关信息 /** * @subject <学习与创业>作业1 * @author 信管1142班 201411671210 赖俊杰 * @className <JAVA入门第一季 ...

  8. Java入门第一季——从此投身Java??

    找工作告一段落. 最后的工作呢,和java紧密相关,也是阴差阳错,不过都是软件开发,都好了,不过以后侧重点肯定是在java这边,php有机会还是一直学下去的,那么美的说~ Java开发第一季  一.简 ...

  9. 《java入门第一季》之面向对象(this和super详细分析)

    此文章来自于书籍,里面介绍了this和super详细的区别.当然在后边的文章中还有涉及super的时候还会分析. Java关键字this.super使用总结 一.this Java关键字this只能用 ...

  10. 《java入门第一季》之面向对象(面向对象案例详解)

    通过几个小案例理重新回顾一下前面所写的内容,对面向对象的理解更加深刻的目的: 案例一: /* 需求: 定义一个员工类,自己分析出几个成员, 然后给出成员变量,构造方法,getXxx()/setXxx( ...

随机推荐

  1. webpack4.x配置详解,多页面,多入口,多出口,新特性新坑!!

    花了差不多一天多的时间,重新撸了一遍webpack4.x的常用配置. 基本上常用的配置都熟悉了一遍,总体上来讲,为了对parcel进行反击,webpack从4.x开始,正在朝着尽可能的简化配置文件的方 ...

  2. 自定义下拉刷新上拉加载View

    MainActivity.java package com.heima52.pullrefresh; import java.util.ArrayList; import com.heima52.pu ...

  3. Dynamics CRM 导出系统中实体的属性字段到EXCEL

    我们在CRM中看元数据信息,可以通过SDK中的metadata browser的解决方案包,但该解决方案包只是在可视化上方便了,但如果我们需要在excel中整理系统的数据字典时这个解决方案包就派不上用 ...

  4. Detailed Item Cost Report (XML) timed out waiting for the Output Post-processor to finish

    In this Document   Symptoms   Cause   Solution   References APPLIES TO: Oracle Cost Management - Ver ...

  5. C算法实现:将字符串中的数字返回为整型数

    今天看linux内核驱动的代码,发现一个算法写得挺简单,也有意思. 分享一下我的测试代码: #include <stdio.h> typedef int U32 ; U32 String2 ...

  6. 剑指Offer——网易笔试题+知识点总结

    剑指Offer--网易笔试题+知识点总结 Fibonacci package cn.edu.ujn.nk; import java.util.ArrayList; import java.util.S ...

  7. Android N(7.0) 被美翻的新特性!

    Tamic 专注移动开发!更多文章请关注 Csdn: http://blog.csdn.net/sk719887916/article/details/52612444 $ http://www.ji ...

  8. AR模块常用函数

    --AR模块常用函数 FUNCTION get_fnd_user_name ( p_user_id IN NUMBER ) return VARCHAR2 IS CURSOR c_user_name ...

  9. EBS开发之环境迁移

    (一)环境迁移说明 1.1   迁移 由于EBS系统开发复杂,一般项目实施都是使用三套或者三套以上的系统,一套作为开发使用系统,一套作为集成测试系统,一套就是企业用的正式环境系统,在项目实施过程中对一 ...

  10. Android布局中ScrollView与ListView的冲突的最简单方法

    看到网上流行的一种使用方法是: public class Utility { public static void setListViewHeightBasedOnChildren(ListView ...