封装和继承,接口与扑克牌小程序、美女选妃例子修改

一.封装和继承

1.什么是封装
在这里插入图片描述2.什么是继承

在这里插入图片描述3.继承的好处和弊端
在这里插入图片描述4.JAVA类的继承特点
通俗来说一个 儿子只能有一个爹。但爹可以有多个儿子

在这里插入图片描述

二.接口

1.接口就是提供对外访问的规则。
就像手机充电器一样,ios系统和安卓系统的充电器接口是不一样的。
2.类实现接口用 implements 表示
在这里插入图片描述
3. 抽象类和抽象方法必须用 abstract 关键字修饰
在这里插入图片描述4.接口的子类
接口和接口也可以继承,即一个接口继承另外一个接口,不过这里不是子类与父类关系,这里称为子接口与父接口
在这里插入图片描述

注意: 接口、抽象类和类之间要区别开。类和类(包括抽象类)之间才有继承关系,只有具有继承关系的两个类之间才能称为子类和父类

三.面向对象和面向过程的区别

举个把大象放进冰箱里需要几步的例子
面向过程:打开冰箱,先把大象的头放进冰箱中,再把大象的身子和腿放进冰箱里
面向对象:找一个人,让这个人把大象放进冰箱里。这个人就是对象

其实我们人现实生活中都是在面向对象。比如:去饭店吃饭,你只要说明吃什么就可以了,有必要还了解这个菜是怎么做的,是哪里来的,怎么去种这个菜吗?
面向对象也可以说是从宏观方面思考问题,而面向过程可以说是从细节处思考问题。在面向对象中,也存在面向过程。

四.扑克牌小程序

代码如下

public class DouDiZhu {
    public static void main(String[] args){
        //1.准备一副牌
        List<String> poker=new ArrayList<>();
        String[] nums={"A","1","2","3","4","5","6","7","8","9","10","J","Q","K"};
        String[] colors={"黑桃","红心","梅花","方块"};

        for(String color:colors){
            for(String num:nums){
                String pai=color+num;
                poker.add(pai);
            }
        }
        poker.add("大王");
        poker.add("小王");
        System.out.println(poker);
        //2.洗牌
        Collections.shuffle(poker);
        System.out.println(poker);
        //3.留3张牌
        List<String> dipai=new ArrayList<>();
        Random random=new Random();
        for (int i=0;i<3;i++){
            int index=random.nextInt(poker.size());
            String pai=poker.remove(index);
            dipai.add(pai);
        }
        System.out.println(dipai);
        System.out.println(poker);
        //4.发牌
        List<String> aa=new ArrayList<>();
        List<String> bb=new ArrayList<>();
        List<String> cc=new ArrayList<>();
        for(int i=0;i<poker.size();i++){
            String pai=poker.get(i);
            int mod=i%3;
            if(mod==0){
                aa.add(pai);
            }else if(mod==1){
                bb.add(pai);
            }else {
                cc.add(pai);
            }
        }
        //5.看牌
        System.out.println(aa);
        System.out.println(bb);
        System.out.println(cc);
    }
}

程序运行结果如下图
在这里插入图片描述

五.美女选妃例子修改
实现代码如下

public  class test44 {
    public List<BL> getBLs() {
        List<BL> bls = new ArrayList<>();
        Scanner input = new Scanner(System.in);
        for (int i = 1; i < 4; i++) {
            System.out.println("请输入第" + i+ "个美女的身高:");
            int h = input.nextInt();
            System.out.println("请输入第" + i + "个美女的体重:");
            int w = input.nextInt();
            BL bl=new BL();
            bl.setHeight(h);
            bl.setWight(w);
            bls.add(bl);
        }
        return bls;
    }

    public Map<String, Integer> getSumHAndSumW(List<BL> bls) {

        //增强for循环
        int sumH = 0;
        int sumW = 0;
        for (BL bl : bls) {
            sumH = sumH + bl.getHeight();
            sumW = sumW + bl.getWight();
        }
        System.out.println(sumH+"====="+sumW);
        Map map = new HashMap();
        map.put("sgh", sumH);
        map.put("tzh", sumW);
        return map;
    }

    public Map<String, Integer> getAvg(Map<String, Integer> map) {
        int sumH = map.get("sgh");
        int sumW = map.get("tzh");
        int avgH = sumH / 3;
        int avgW = sumW / 3;


        Map<String, Integer> avgMap = new HashMap<>();
        avgMap.put("pjsg", avgH);
        avgMap.put("pjtz", avgW);
        return avgMap;
    }

    public String getResult(Map<String, Integer> avgM) {
        int avgH = avgM.get("pjsg");
        int avgW = avgM.get("pjtz");
        if (avgH > 150 && avgW < 100) {
            return "是美女";
        } else {
            return "不是美女";
        }

    }

    public static void main(String[] args) {
      /*  a.从浙江工贸选10个美女

        null 2019/9/10 16:51:19
        b.计算10个美女的身高和 和 体重和

        null 2019/9/10 16:51:38
        b 计算10美女的平均身高和平均体重

        null 2019/9/10 16:52:29
        d 判断这批美女是否合格  平均身高》150  平均体重《200*/
        test44 test44 = new test44();
        List<BL> bls= test44.getBLs();
        /*List<Integer> hights = sgtz.get("sg");
        List<Integer> wights = sgtz.get("tz");*/
        Map<String, Integer> map = test44.getSumHAndSumW(bls);
        Map<String, Integer> avgM = test44.getAvg(map);
        String s = test44.getResult(avgM);
        System.out.println(s);


    }
}

程序运行结果如下图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值