用Java设计程序(内部类,匿名类)

1、三大体育媒体互联网平台,由于资源独占,有些类别的运动只能在某个平台上进行独播

2、足球赛事只能在平台A上进行独播,篮球赛事只能在平台B上进行独播,排球赛事只能在平台C上进行独播,其他赛事可以在几个平台上进行直播;

3、要求

( 1)三个体育直播平台EA、EB、EC设计为三个类

( 2)设计一个体育赛事的类SportsGame

(3)三个赛事设计为体育赛事的三个子类,分别作为三个平台的内部

(3)其他羽毛球、乒乓球等赛事设计为普通的类,继承自体育賽事( 4)可以根据不同赛事的特点,为其设计内部的成员变量和成员函数(5)利用匿名类新增其他的体育赛事

( 6)在main函数中进行测试

( 7)增加比赛规则接口IRule, 令所有的体育赛事实现该接口,重新制定各自的比赛规则


public class Demo {
    public static void main(String[] args) {
        EB eb = new EB();
        EB.Basketball basketball = eb.new Basketball(10);
        basketball.game();
        basketball.setCoach("姚明");
        basketball.strategy();
        
        // 匿名类
        new SportsGame(5) {
            @Override
            public void rule() {
                System.out.println("比赛规则...");
            }

            @Override
            protected void game() {
                rule();
                System.out.println(getSportsman() + "人参加短跑运动");
            }
        }.game();
    }
}

abstract class SportsGame implements IRule {
    // 运动员人数
    private int sportsman;

    public SportsGame() {
    }

    public SportsGame(int sportsman) {
        this.sportsman = sportsman;
    }

    public int getSportsman() {
        return sportsman;
    }

    public void setSportsman(int sportsman) {
        this.sportsman = sportsman;
    }

    protected abstract void game();
}


class EA {
    public EA() {
        System.out.println("欢迎观看A平台直播...");
    }

    // 足球
    class Football extends SportsGame {
        public Football(int sportsman) {
            super(sportsman);
        }

        @Override
        protected void game() {
            System.out.println(getSportsman() + "人参加足球赛事");
        }

        @Override
        public void rule() {

        }
    }
}

class EB {
    public EB() {
        System.out.println("欢迎观看B平台直播...");
    }

    // 篮球
    class Basketball extends SportsGame {
        private String coach;

        public Basketball(int sportsman) {
            super(sportsman);
        }

        public String getCoach() {
            return coach;
        }

        public void setCoach(String coach) {
            this.coach = coach;
        }

        @Override
        protected void game() {
            System.out.println(getSportsman() + "人参加篮球赛事");
        }

        public void strategy() {
            System.out.println(String.format("教练 [%s] 商量策略", coach));
        }

        @Override
        public void rule() {

        }
    }
}

class EC {
    public EC() {
        System.out.println("欢迎观看C平台直播...");
    }

    // 排球
    class Volleyball extends SportsGame {

        public Volleyball(int sportsman) {
            super(sportsman);
        }

        @Override
        protected void game() {
            System.out.println("排球赛事");
        }

        @Override
        public void rule() {

        }
    }
}

// 乒乓球
class PingPong extends SportsGame {
    public PingPong(int sportsman) {
        super(sportsman);
    }

    @Override
    protected void game() {
        System.out.println("乒乓球赛事");
    }

    @Override
    public void rule() {

    }
}

interface IRule {
    void rule();
}