黑马程序员——Java基础--继承、多态、抽象、接口联合使用的案例
2015-06-27 14:40
866 查看
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
第五讲 案例
教练和运动员案例
要求 :三个属性
构造方法
get()/set()
其他成员方法 至少两个
针对这个问题,我们首先要想到的是继承、多态、抽象、接口的使用方法,前面我已经说到了这几种类型的使用方法,下面我就先来好好分析下这个例题。
分析:
1、教练和运动员都属于人类,共有属性(姓名,年龄,性别)
2、乒乓球教练和篮球教练都属于教练类(他们的方法都是教,教的东西不一样)
3、运动员同理(学习的方法不一样)
4、运动员还有打球的扩展功能
5、都有eat(),sleep()
其关系图如图所示:
运行结果为:
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
第五讲 案例
教练和运动员案例
要求 :三个属性
构造方法
get()/set()
其他成员方法 至少两个
针对这个问题,我们首先要想到的是继承、多态、抽象、接口的使用方法,前面我已经说到了这几种类型的使用方法,下面我就先来好好分析下这个例题。
分析:
1、教练和运动员都属于人类,共有属性(姓名,年龄,性别)
2、乒乓球教练和篮球教练都属于教练类(他们的方法都是教,教的东西不一样)
3、运动员同理(学习的方法不一样)
4、运动员还有打球的扩展功能
5、都有eat(),sleep()
其关系图如图所示:
package abstracttest; /* 教练和运动员案例 要求 : 三个属性 构造方法 get()/set() 其他成员方法 至少两个 分析: 1、教练和运动员都属于人类,共有属性(姓名,年龄,性别) 2、乒乓球教练和篮球教练都属于教练类(他们的方法都是教,教的东西不一样) 3、运动员同理(学习的方法不一样) 4、运动员还有打球的扩展功能 5、都有eat(),sleep() */ public class PersonTest3{ public static void main(String[] args){//程序入口 Coach p = new BasketBallCoach("张三",35,"男教练,教篮球的");//多态 //方法调用 p.show(); p.teach(); p.eat(); p.sleep(); System.out.println("-----------------------"); TableCoach p1 = new TableCoach("李四",30,"女教练,教乒乓球的"); //方法调用 p1.show(); p1.teach(); p1.eat(); p1.sleep(); System.out.println("-----------------------"); Person p2 = new BasketBallStudent(); BasketBallStudent p3 = (BasketBallStudent)p2;//这里进行了强转 p3 = new BasketBallStudent("王强",20,"男运动员,学篮球的"); //方法调用 p3.show(); p3.study(); p3.eat(); p3.sleep(); p3.jump(); p3.delicacy(); System.out.println("-----------------------"); Athlete p4 = new TableStudent(); TableStudent p5 = (TableStudent)p4;//这里进行了强转 p5 = new TableStudent("李彦宏",18,"女运动员,学乒乓球的"); //方法调用 p5.show(); p5.study(); p5.eat(); p5.sleep(); p5.jump(); p5.delicacy(); } } //人类属于抽象类 abstract class Person{ // 成员变量 private String name;//姓名 private int age;//年龄 private String sex;//性别 //构造方法 Person(){}//无参构造 Person(String name,int age,String sex){//有参构造 this.name = name; this.age = age; this.sex = sex; } // 成员方法 public void setName(String name){ this.name = name; } public String getName(){ return this.name; } public void setAge(int age){ this.age = age; } public int getAge(){ return this.age; } public void setSex(String sex){ this.sex = sex; } public String getSex(){ return this.sex; } public abstract void eat(); public abstract void sleep(); public void show(){ System.out.println("我的名字叫:"+name+",我今年"+age+"岁了,我是"+sex); } } //教练抽象类继承人类 abstract class Coach extends Person{ //构造方法 Coach(){} Coach(String name,int age,String sex){ super(name,age,sex); } // 成员方法 public abstract void teach(); public void eat(){ System.out.println("我喜欢大鱼大肉......"); } public void sleep(){ System.out.println("我喜欢睡大觉......"); } } //运动员抽象类继承人类 abstract class Athlete extends Person{ //构造方法 Athlete(){} Athlete(String name,int age,String sex){ super(name,age,sex); } // 成员方法 public abstract void study(); public void eat(){ System.out.println("我喜欢吃快餐......"); } public void sleep(){ System.out.println("我喜欢早起跑步......"); } } //篮球教练教的方法,继承教练类 class BasketBallCoach extends Coach{ //构造方法 BasketBallCoach(){} BasketBallCoach(String name,int age,String sex){ super(name,age,sex); } // 成员方法 public void teach(){ System.out.println("赶紧传球...回防......"); } } //乒乓球教练教的方法,继承教练类 class TableCoach extends Coach{ //构造方法 TableCoach(){} TableCoach(String name,int age,String sex){ super(name,age,sex); } // 成员方法 public void teach(){ System.out.println("赶紧训练......"); } } //运动员的扩展功能,接口 interface SuDu{ public abstract void jump(); public abstract void delicacy(); } //篮球运动员继承运动员类,并且实现了接口功能 class BasketBallStudent extends Athlete implements SuDu{ //构造方法 BasketBallStudent(){} BasketBallStudent(String name,int age,String sex){ super(name,age,sex); } // 成员方法 public void study(){ System.out.println("老师说了,赢了就有机会加入国家队......"); } public void jump(){ System.out.println("我们要多参加跳高运动......"); } public void delicacy(){ System.out.println("我们要多多加快灵敏度......"); } } //乒乓球运动员继承运动员类,并且实现了接口功能 class TableStudent extends Athlete implements SuDu{ //构造方法 TableStudent(){} TableStudent(String name,int age,String sex){ super(name,age,sex); } // 成员方法 public void study(){ System.out.println("我们是要去美国拿冠军的......"); } public void jump(){ System.out.println("我们要多参加跳高运动......"); } public void delicacy(){ System.out.println("我们要多多加快灵敏度......"); } }
运行结果为:
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
相关文章推荐
- 编程面试过程中常见的10大算法
- Android -常见面试提问
- 程序员常去的14个顶级开发社区
- 如何成为一名真正专业的程序员
- #面试题--求数组中满足条件(a[0..i-1]<=a[i]<=a[i+1..N-1])的元素
- 黑马程序员——Java基础--接口
- 黑马程序员--Java学习日记之类的加载,反射,动态代理,枚举
- 黑马程序员——构造函数与set方法
- 程序员修炼之道摘要
- 面试总结二
- 黑马程序员-【java基础】-多线程
- 黑马程序员——内部类的理清
- 黑马程序员--构造函数的理解和怎么去使用
- 【BAT(百度,阿里,腾迅)面试题】
- 黑马程序员——Java基础--面向对象(一)
- 如何成为一名真正专业的程序员
- 《程序员的自我修养》系列技术文章整理收藏
- 面试需要的基础知识-替换空格
- 面试需要的基础知识-合并排序数组
- 黑马程序员-IOS学习笔记(六)Category(类别)