需求:

/*
    教练和运动员案例
        乒乓球运动员和篮球运动员。
        乒乓球教练和篮球教练。
        跟乒乓球相关的人员都需要学习英语。
        分析,这个案例中有哪些抽象类,哪些接口,哪些具体类。
    
    整个分析过程,由图片展示。    
*/

代码如下:

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入门第一季》之Date类案例,算一算你的恋爱纪念日

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

  2. 《java入门第一季》之类String类小案例

    String类有许多获取方法,API文档里面可查看.针对获取方法,给出小案例. /** 需求:遍历获取字符串中的每一个字符* 分析: 用到两个方法:char charAt(int index) 表示获 ...

  3. 《java入门第一季》之java语法部分小案例

    到这里举一个小例子把语法部分梳理一下,下一节开始进入java正式基础--面向对象的学习整理. 案例: /*某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,在传递过程中需要加密,加 ...

  4. 《java入门第一季》之面向对象(包概述)

    由于eclipse等ide的强大功能,使得建包,导包用一些快捷键就能完成.这里对包的概念做稍微的叙述,了解即可: 分包后使得项目更加清晰,提高代码维护性. 包:         A:其实就是文件夹   ...

  5. 《java入门第一季》之面向对象

    之前的代码描述都是基于面向过程的,今天开始正式进入面向对象的世界.什么是对象?首先要区分类和对象的概念-- 现实世界中是如何描述一个事物的? 举例:学生 姓名,年龄,性别... 学习,吃饭,睡觉 属性 ...

  6. 《java入门第一季》之面向对象面试题(继承中构造方法的关系)

    /*继承中构造方法的关系A:子类中所有(子类的有参和无参)的构造方法(默认都会访问父类)中(空参数)的构造方法,默认访问父类空参数构造,不默认访问有参数构造B:为什么呢?因为子类会继承父类中的数据,可 ...

  7. 《java入门第一季》之面向对象(static关键字)

    /*static的特点:(它可以修饰成员变量,还可以修饰成员方法)A:随着类的加载而加载回想main方法.B:优先于对象存在C:被类的所有对象共享举例:班级的学生应该共用同一个班级编号.其实这个特点也 ...

  8. 《java入门第一季》之面向对象this关键字

    /*起名字要做到见名知意.this:是当前类的对象引用.简单的记,它就代表当前类的一个对象.注意:谁调用这个方法,在该方法内部的this就代表谁.this的场景:解决局部变量隐藏成员变量 */ //定 ...

  9. 《java入门第一季》之面向对象(final关键字)

    /*final可以修饰类,方法,变量特点:final(可以修饰类),该(类)(不能被继承).一旦修饰了一个类,这个类就不能被继承了!final以修饰方法,该方法可以被继承但是不能被重写.(覆盖,复写) ...

最新文章

  1. Python:Bug 官网不要了,全迁去 GitHub
  2. MySQL 加锁处理分析
  3. Mathemmatica 新函数
  4. java 小数运算 少0.1_计算器是如何实现0.1的?
  5. C#异步编程-------异步编程模型(APM)
  6. 将万亿以下的阿拉伯数字转为中文金额
  7. DS1819 对应版本的FFMPEG_OpenCV开发笔记(七十):红胖子带你傻瓜式编译VS2017x64版本的openCV4...
  8. java 泛型 擦除_Java泛型和类型擦除
  9. JS中格式化数据保留两位小数
  10. 预充电电路工作原理_变频冰箱开关电源电路工作原理及检修。
  11. php中ci框架分页,Codeigniter(CI)框架分页函数及相关知识
  12. 给大家安利一个买电脑好去处(内有福利)
  13. elasticsearch基础查询
  14. stm32学习探究:利用TB6612驱动直流电机
  15. 基于SSM的图书商城的设计与实现(文末附源码)
  16. android sqlite英文文献,SQLite数据库外文文献翻译.doc
  17. pink-jQuery
  18. Pillow教程(一)
  19. comb函数在C语言中,always_comb和always @(*)
  20. 23年哪些企业不能申报高企

热门文章

  1. VC获取屏幕dpi,win32绘图适配高dpi模式,windows屏幕缩放图像拉伸失真问题
  2. 又来了,上班又开始了,奋斗还得继续....
  3. QC新旧七图汇总连载3——检查表
  4. 2021年JavaScript实用手册
  5. 好未来第一届PHP开源技术大会资料分享
  6. python对数函数定义域如何为一切实数_函数的定义域为一切实数
  7. ddd模型 java中使用_DDD-领域驱动设计示例
  8. Twitter裁完Meta裁,硅谷迎来史上最大规模裁员...
  9. 【指引】新手如何自学网页爬虫(更新完结)
  10. 29.4米/天!安百拓智能岩心钻机在川藏铁路创造深孔钻进新纪录