案例:运动员和教练

案例:运动员和教练

需求:我们现在有乒乓球运动员和篮球运动员,乒乓球教练和篮球教练。为了出国交流,跟乒乓球都需要英语学习,
请用所学的知识分析,这个案例中有哪些具体的类,哪些抽象类,哪些借口,并用代码实现
思路:

  1. …:代表无惨,带参构造器,
  2. 接口:英语接口,抽象方法是:说英语()
  3. 定义抽象人类:姓名,年龄…以及get/set方法,吃饭方法
  4. 定义教练类,继承人类: …教()
  5. 定义运动员类,继承人类:。。。。学习()
  6. 定义具体的篮球教练类,继承教练类: … 重写吃饭,教
  7. 定义具体的乒乓球教练类,继承教练类,实现说英语接口: …重写吃饭方法(){} 教(){} 重写英语方法(){}
  8. 定义具体的篮球运动员类,继承运动员类:… 重写吃饭方法(){},重写学习方法(){}
  9. 定义具体的乒乓球运动员类,继承运动员类,实现说英语接口:… 重写吃饭方法(){},重写学习方法(){},重写说英语方法(){}
  10. 定义测试类,写代码测试

方法:

  1. 分析方法: 一定从具体到抽象!!!由底向上
  2. 实现方法: 一定是从抽象到具体!! 由上到底
    == !!!!! 使用(测试):使用的是具体的类的对象==

各层关系结构:
柏维怡
代码实现图:
注意接口和抽象类图标
柏维怡

代码块:

SpeakEnglish(接口)

package CCom.Cnn;

public interface SpeakEnglish {
    void english();//提供说英语行为方法(可采纳不采纳)
}

Coach(抽象类)

package CCom.Cnn;

public abstract class Coach extends Person {
    public Coach() {
    }

    public Coach(String name, int age) {
        super(name, age);
    }

    public abstract void Coach();
}

Player(抽象类)

package CCom.Cnn;

public abstract class Player extends Person{
    public Player() {
    }

    public Player(String name, int age) {
        super(name, age);
    }

    public abstract void play();
}

Person(抽象类)

package CCom.Cnn;

public 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 eat(){
        System.out.println("吃");
    }
}

BasketballCoach(具体类)

package CCom.Cnn;

public class BasketballCoach extends Coach{
    public BasketballCoach() {
    }

    public BasketballCoach(String name, int age) {
        super(name, age);
    }

    @Override
    public void Coach() {
        System.out.println("教如何三步上篮");
    }

    @Override
    public void eat() {
        System.out.println("教练吃饭");
    }
}

BasketballPlayer(具体类)

package CCom.Cnn;

public class BasketballPlayer extends Player {
    public BasketballPlayer() {
    }

    public BasketballPlayer(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("打完球吃饭");
    }

    @Override
    public void play() {
        System.out.println("正在打篮球");
    }
}

PingPangCoach(具体类)

package CCom.Cnn;

public class PingPangCoach extends Coach implements SpeakEnglish{
    public PingPangCoach() {
    }

    public PingPangCoach(String name, int age) {
        super(name, age);
    }

    @Override
    public void Coach() {
        System.out.println("教我们打乒乓球");
    }

    @Override
    public void english() {
        System.out.println("正在说英语");
    }

    @Override
    public void eat() {
        System.out.println("教练正在吃饭");
    }
}

PingPangPlayer(具体类)

package CCom.Cnn;

public class PingPangPlayer extends Player implements SpeakEnglish{
    public PingPangPlayer() {
    }

    public PingPangPlayer(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("在吃饭饭");
    }

    @Override
    public void play() {
        System.out.println("正在打乒乓");
    }

    @Override
    public void english() {
        System.out.println("说英语");
    }
}

Demo测试类

package CCom.Cnn;
public class Demo {
    public static void main(String[] args) {
           //带参构造和属性私有分别写一下,并且注意了一定采用继承方式来使用实现!!
           //继承方式是为了减少反复使用重复的代码

        //1
        BasketballCoach b = new BasketballCoach("沸羊羊",17);
        System.out.println(b.getName()+b.getAge());
        b.eat();
        b.Coach();
        System.out.println("------------------");

        //2
        BasketballPlayer b2=new BasketballPlayer();
        b2.setName("美羊羊");
        b2.setAge(18);
        System.out.println(b2.getName()+b2.getAge());
        b2.eat();
        b2.play();

        System.out.println("------------------");

        //3
        PingPangCoach p=new PingPangCoach("喜羊羊",19);
        System.out.println(p.getName()+p.getAge());
        p.eat();
        p.Coach();
        p.english();

        //4       八嘎呀路   最后一个自己写去
    }
}

输出的结果:
沸羊羊17
教练吃饭
教如何三步上篮

美羊羊18
打完球吃饭
正在打篮球

喜羊羊19
教练正在吃饭
教我们打乒乓球
正在说英语

开课实验室:现代信息交流中心403 开课时间: 2019年**月**日 实验报告: 2019年 11月 9日 "学院 "信息工程学"年级、 "软件1803班 "学号 "20180822 " "名称 "院 "专业、 " " " " " " "班 " " " " "实验类型 "验证 综合 设计 创新 "成绩 " " "教" " "师"教师签名: " "评"年 月 日 " "语" " 1. 实验目的:熟悉掌握Java中的面向对象编程,包括类、继承多态等面向对象方法 。 2. 实验内容: 1. 编写一个圆类Circle,该类拥有: (1)属性radius; (2)构造方法Circle()Circle(double r) (3)成员方法: double getArea() double getPerimeter() void show()//显示半径、周长面积 编写一个圆柱体Cylinder,它继承上面的Circle类,还拥有: (1)属性hight (2)构造方法Cylinder(double r, double h) (3)成员方法 double getVolume() void showVolume() 编写测试类,创建上面两个类的对象,并运行其中的方法。 2. 创建一个Vehicle类并将它声明为抽象类。在Vehicle类中声明一个NumOfWheels方法,用 于显示车轮的数量。 创建两个类CarMotorbike从Vehicle类继承,并在这两个类中实现NumOfWheels方法。 在Car类中,应当显示"四轮车"信息; 而在Motorbike类中,应当显示"双轮车"信息。 创建一个带main方法的类,在该类中创建CarMotorbike的实例,并在控制台中显示消 息。 3. 采用类、继承、接口等面向对象思维来设计教练运动员: (1)乒乓球运动员篮球运动员 (2)乒乓球教练篮球教练 (3)为了出国交流,跟乒乓球关的人员都需要学习英语。 提示:重点考虑类中属性、方法类间层次关系,并编程实现。 3. 源代码清单: 1.源代码清单 package text1; public class Circle { double radius; Circle(){ radius=0; } Circle(double radius){ this.radius=radius; } double getArea(){ return radius*radius*Math.PI; } double getPerimeter(){ return radius*Math.PI*2; } void show(){ System.out.println("半径:"+radius+"周长:"+getPerimeter()+"面积:"+getArea( )); } } public class Cylinder extends Circle{ double hight; Cylinder(double r, double h){ this.radius=r; this.hight=h; } double getVolume(){ return getArea()*hight; } void showVolume(){ System.out.println("体积:"+getVolume()); } public static void main(String args[]) { Circle a = new Circle(4); Cylinder b= new Cylinder(4,6); a.show(); b.showVolume(); } } 2.源代码清单 package text1; abstract class Vehicle { abstract void NumOfWheels(); } public class Car extends Vehicle{ void NumOfWheels(){ System.out.println("四轮车"); } } public class Motorbike extends Vehicle{ void NumOfWheels(){ System.out.println("双轮车"); } public static void main(String args[]){ Car a = new Car(); Motorbike b= new Motorbike(); a.NumOfWheels(); b.NumOfWheels(); } } 3. 源代码清单 package shiyan3; abstract class person { public void show() { Syst
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发热的嘤嘤怪(2003计科胜胜同学)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值