面向对象的三大特征(最详细讲解),包含彩票小项目

本文介绍了Java中的封装概念及其优点,包括保护内部数据、降低耦合度和方便使用。讲解了访问权限修饰符的使用,如public、protected、默认和private。此外,详细阐述了继承的概念,注意点和语法,以及super关键字的使用场景。接着讨论了多态性,包括物的多态和事的多态,如重载和重写。文章还提供了一个模拟彩票31选7的游戏作为示例,展示了如何运用这些概念。

目录

封装

概念:

优点:

访问权限修饰符

标椎类

继承

        概念:

        注意:

        语法:

        super:

多态

        概念:

        物的多态:

        instanceof:

事的多态

        1.重载

        2.重写

                要求:

                注意:

面试题:

今天给大家带来一个有趣的小游戏,模拟彩票31选7:

        思想:

        实现:


封装

概念:

        包装

优点:

        1.保护内部

        2.降低耦合度

        3.方便使用

访问权限修饰符

        public        公共的        当前项目下

        protected        受保护的        当前包中或者继承关系中

        不写        默认的                当前包中

        private        私有的        当前类中

标椎类

        私有化所有属性,无参构造,全参构造,get和set方法,toString方法

继承

        概念:

                子类继承父类的所有属性和方法,构造函数除外

        注意:

                1.一个类只能有一个直接父类

                2.是否存在继承关系

                3.所有类都是Object的子类

                4.一个类没有明确写出继承的类,那么默认继承Object类

                5.创建子类对象时一定会创建父类对象,子类构造函数中默认调用父类的无参构造函数,子类构造函数中必须调用父类的构造函数

        语法:

                访问权限修饰符 class 子类 extends 父类名{

                        属性

                        方法

                        构造函数

}

        super:

                含义:谁调用super所在的方法,super就代表谁的父类

                使用场景:

                        场景1:调用父类的构造函数

                                语法:super(实参列表);

                        场景2:当父类的属性名与子类的属性名相同时,使用super进行区分

                                super.属性名                父类的属性

                                属性名                            子类的属性

                        场景3:子类方法名如果和父类的方法名相同时,形参列表相同,如果区分

                                super.方法名(实参列表);                父类的方法

                                方法名(实参列表);                           子类特有的方法

多态

        概念:

                一个事物的多种形态

        物的多态:

                子类对象转父类对象,自动转型

                注意:

                        1.子类对象转换为父类对象后,无法调用子类特有的属性和方法

父类对象转子类对象:强制转换

               注意:强制转换可能出现异常

        instanceof:

                作用:

                        判断该对象是否属于该类

                注意:

                        该对象必须和该类存在继承关系

                语法:

                        父类对象或子类对象        instanceof        子类名

事的多态

        1.重载

                要求:同一个类中,方法名一致,形参列表不同

        2.重写

                要求:

                        1.继承关系中

                        2.方法名相同,形参列表页相同,返回值类型也相同

                        3.子类方法的访问权限修饰符不能小于父类的访问权限修饰符

                注意:

                        1.子类重写父类方法后会覆盖父类原有的方法,此时子类转换为父类对象调用重写的方法,执行的还是子类重写后的方法.

面试题:

        请问重载与重写的区别:

答:

        1.发生关系的位置不同,重载发生在一个类中,重写发生在继承关系中

        2.访问权限修饰符的要求不同,重载没有要求,重写要求子类方法的权限不能小于父类的

        3.返回值类型的要求不同,重载没有要求,重写要求子类返回值类型必须与父类相同

        4.方法名要求相同,都要求方法名一致

        5.形参列表要求不同,重载要求形参列表不一致,重写要求形参列表一致

今天给大家带来一个有趣的小游戏,模拟彩票31选7:

        思想:

                1.随机生成7个[1,31]的数,并且不能重复.用来模拟中奖号码

                2.让用户输入7个数,并且不能重复,并且范围在[1,31]之间

                3.判断中奖号码与用户输入的号码的相同个数

                4.根据不同的相同个数,返回不同的奖品或等级

                5.公布中奖个数和本期中奖号码

        实现:

       

public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int[] wo=new int[7];
        int[] zhongjiang=new int[7];
        Random random=new Random();
        for (int i = 0; i < zhongjiang.length; i++) {
            int jh = random.nextInt(31)+1;
            boolean issave = issave(zhongjiang, jh);
            if (!issave){
                zhongjiang[i]=jh;
            }else{
                i--;
            }
        }
//        print(zhongjiang);
        for (int i = 0; i < 7; i++) {
            System.out.println("请输入第"+(i+1)+"个数");
            int w = scanner.nextInt();
            boolean issave = issave(wo, w);
            if (w<32&&w>0){
            if (issave){
                System.out.println("该数字重复输入,无效");
                i--;
            }else {
                wo[i]=w;
            }
        }else {
                System.out.println("数字不在范围");
                i--;
            }
        }
        int haomashu = iszhongjiang(zhongjiang, wo);
        result(haomashu);
        print(zhongjiang);

    }
    public static boolean issave(int[] a,int b){
        for (int i = 0; i < a.length; i++) {
            if (a[i]==b){
                //相等
                return true;
            }
        }
        return false;
    }
    public static void print(int[] a){
        System.out.print("本期的中奖号码为:\t");
        for (int i : a) {
            System.out.print(i+"\t");
        }
    }
    public static int iszhongjiang(int[] a,int[] b){
        int flag=0;
        for (int i : a) {
            for (int i1 : b) {
                if (i==i1){
                    flag++;
                }else {
                    continue;
                }
            }
        }
        System.out.println("本次一共押对"+flag+"个号码");
        return flag;
    }
    public static void result(int a){
        switch (a){
            case 7:
                System.out.println("一等奖");
                break;
            case 6:
                System.out.println("二等奖");
                break;
            case 5:
                System.out.println("三等奖");
                break;
            case 4:
                System.out.println("四等奖");
                break;
            case 3:
                System.out.println("五等奖");
                break;
            default:
                System.out.println("谢谢惠顾,欢迎下次光临~");

        }
    }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值