15-JavaSE基础巩固练习:多态、接口、抽象类的综合练习

news2025/1/12 1:07:14

多态的综合练习

1、需求

  • 狗类

    • 属性:年龄,颜色
    • 行为:
      • eat(String something):表示吃东西
      • lookHome():看家
  • 猫类

    • 属性:年龄,颜色
    • 行为:
      • eat(String something):吃东西
      • catchMouse():逮老鼠
  • 饲养员

    • 属性:姓名,年龄
    • 行为:
      • keepPet(Dog dog, String something):喂养宠物狗,something表示喂养的东西
      • keepPet(Cat cat, String something):喂养宠物猫,something表示喂养的东西
      • 需要无参与有参构造器,set和get方法
  • 测试类

    • 完成以下打印效果:

      • 年龄为30岁的老王养了一只黑颜色的2岁的狗。

        2岁的黑颜色的狗两只前腿死死的抱住骨头猛吃。

      • 年龄为25岁的老李养了一只灰颜色的3岁的猫。

        3岁的灰颜色的猫眯着眼睛侧着头吃鱼。

  • 思考

    • 1、Dog和Cat都是Animal的子类,以上案例中针对不同的动物,定义了不同的keepPet方法,过于繁琐,能否简化,并体会简化后的好处
    • 2、Dog和Cat虽然都是Animal的子类,但是都有其特有方法,能否想办法在keepPet中调用特有方法


2、分析

  • 我们可以发现这个需求中:
    • 猫、狗都属于动物,属性也一样,也有相同的行为;
    • 因此我们需要让猫和狗类继承动物类,抽离相同的属性、行为定义在动物类中;
    • 猫和狗类只需要定义它们自己特有的方法即可。
    • 饲养员类要单独定义。
  • 提问?
    • 为啥人不继承动物类呢?人也是动物啊?
    • 这个问题没毛病,但是不符合我们的这个需求!
    • 我们的需求是人饲养宠物猫、宠物狗,而不是人饲养人。


3、实现

package com.app.demo24_polymorphic.been;

/**
 * 动物类
 */
public class Animal {
    /*
        定义动物相同的属性:
            年龄,颜色
     */
    private int age;
    private String color;

    /*
        提供无参数的构造器
        提供有全部参数的构造器
     */
    public Animal() {}
    public Animal(int age, String color) {
        this.age = age;
        this.color = color;
    }

    /*
        提供全套的get和set方法
        方便暴露属性的取值和赋值
     */
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }


    /*
        定义动物相同的行为:
            吃东西
     */
    public void eat(String something) {
        System.out.println("动物在吃" + something);
    }
}
package com.app.demo24_polymorphic.been;

/**
 * 狗类:继承父类动物类
 */
public class Dog extends Animal{
    /*
        由于狗类继承了父类动物类,
        因此只需要在狗类中定义狗特有的行为就好了
        定义狗特有的行为:看门
     */
    public void lookHome() {
        System.out.println("狗正趴在门口~");
    }

    /*
        提供无参数的构造器
        提供有参数的构造器
     */
    public Dog() {}
    public Dog(int age, String color) {
        super(age, color);
    }

    /*
            由于父类动物类中的吃东西的行为是面向所有动物的,
            又因为需求中有对狗吃东西的描述:2岁的黑颜色的狗两只前腿死死的抱住骨头猛吃。
            因此需要重写父类的eat方法。
         */
    @Override
    public void eat(String something) {
        System.out.println(getAge() + "岁的" + getColor() + "颜色的狗两只前腿死死的抱住" + something + "猛吃。");
    }
}
package com.app.demo24_polymorphic.been;

/**
 * 猫类:继承动物类
 */
public class Cat extends Animal{
    /*
        由于猫类继承了父类动物类,
        因此只需要在猫类中定义猫特有的行为就好了
        定义猫特有的行为:逮老鼠
     */
    public void catchMouse() {
        System.out.println("猫正在奋力的逮老鼠~~");
    }

    /*
        提供无参数的构造器
        提供有参数的构造器
     */
    public Cat() {}
    public Cat(int age, String color) {
        super(age, color);
    }

    /*
        由于父类动物类中的吃东西的行为是面向所有动物的,
        又因为需求中有对猫吃东西的描述:3岁的灰颜色的猫眯着眼睛侧着头吃鱼
        因此需要重写父类的eat方法。
     */
    @Override
    public void eat(String something) {
        System.out.println(getAge() + "岁的" + getColor() + "颜色的猫眯着眼睛侧着头吃" + something + "。");
    }
}
package com.app.demo24_polymorphic.been;

/**
 * 饲养员类
 */
public class Person {
    /*
        定义饲养员的属性:
            姓名、年龄
     */
    private String name;
    private int age;

    /*
        提供无参数的构造器
        提供有全部参数的构造器
     */
    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /*
        提供全套的get和set方法
        方便暴露其属性的取值和赋值
     */
    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 keepPet(Dog dog, String something) {
        System.out.println("年龄为" + age + "岁的" + name + "养了一只" + dog.getColor() + "颜色的" + dog.getAge() + "岁的狗");
        // 狗吃饲养员喂养的食物
        dog.eat(something);
    }*/

    /*
        未使用多态前:
        定义饲养员喂养宠物猫的行为
        参数一:猫对象;参数二:喂养的食物
     */
    public void keepPet(Cat cat, String something) {
        System.out.println("年龄为" + age + "岁的" + name + "养了一只" + cat.getColor() + "颜色的" + cat.getAge() + "岁的猫");
        // 猫吃饲养员喂养的食物
        cat.eat(something);
    }


    /*
        使用多态来定义饲养员喂养宠物狗、猫的行为
        参数一:动物对象;参数二:喂养的食物
     */
    public void keepPet(Animal a, String something) {
        // 无法直接调用子类中的特有行为
        // a.lookHome();
        // a.catchMouse();

        // 判断该动物对象类型是否为狗对象类型
        /*if (a instanceof Dog) {
            // 是,则将动物对象类型强转为狗对象类型
            Dog d = (Dog) a;
            System.out.println("年龄为" + age + "岁的" + name + "养了一只" + d.getColor() + "颜色的" + d.getAge() + "岁的狗");
            // 狗吃饲养员喂养的食物
            d.eat(something);
            // 可以调用子类中的特有行为
            // d.lookHome();
        } else if (a instanceof Cat) { // 否,则判断该动物对象类型是否为猫对象类型
            // 是,则将动物对象类型强转为猫对象类型
            Cat c = (Cat) a;
            System.out.println("年龄为" + age + "岁的" + name + "养了一只" + c.getColor() + "颜色的" + c.getAge() + "岁的猫");
            // 猫吃饲养员喂养的食物
            c.eat(something);
            // 可以调用子类中的特有行为
            // c.catchMouse();
        } else { // 否,则说明没有这种动物
            System.out.println("没有这种动物喔!");
        }*/


        /*
            优化写法
         */
        // 判断该动物对象类型是否为狗对象类型
        if (a instanceof Dog d) { // 是,则将动物对象类型强转为狗对象类型
            System.out.println("年龄为" + age + "岁的" + name + "养了一只" + d.getColor() + "颜色的" + d.getAge() + "岁的狗");
            // 狗吃饲养员喂养的食物
            d.eat(something);
        } else if (a instanceof Cat c) { // 否,则判断该动物对象类型是否为猫对象类型:是,则将动物对象类型强转为猫对象类型
            System.out.println("年龄为" + age + "岁的" + name + "养了一只" + c.getColor() + "颜色的" + c.getAge() + "岁的猫");
            // 猫吃饲养员喂养的食物
            c.eat(something);
        } else { // 否,则说明没有这种动物
            System.out.println("没有这种动物喔!");
        }
    }
}
package com.app.demo24_polymorphic.test;

import com.app.demo24_polymorphic.been.Animal;
import com.app.demo24_polymorphic.been.Cat;
import com.app.demo24_polymorphic.been.Dog;
import com.app.demo24_polymorphic.been.Person;

/**
 * 测试类
 * 完成以下打印效果:
 * 年龄为30岁的老王养了一只黑颜色的2岁的狗。
 * 2岁的黑颜色的狗两只前腿死死的抱住骨头猛吃。
 * 年龄为25岁的老李养了一只灰颜色的3岁的猫。
 * 3岁的灰颜色的猫眯着眼睛侧着头吃鱼。
 */
public class Test {
    public static void main(String[] args) {
        /*// 创建饲养员1
        Person p1 = new Person("老王", 30);
        // 未使用多态前:创建宠物狗
        Dog dog = new Dog(2, "黑");
        // 饲养员1调用喂养宠物狗的行为方法,完成喂养
        p1.keepPet(dog, "骨头");

        // 创建饲养员2
        Person p2 = new Person("老李", 25);
        // 未使用多态前:创建宠物猫
        Cat cat = new Cat(3, "灰");
        // 饲养员2调用喂养宠物猫的行为方法,完成喂养
        p2.keepPet(cat, "鱼");*/

        Person p1 = new Person("老王", 30);
        // 使用多态:创建宠物狗
        Animal dog = new Dog(2, "黑");
        p1.keepPet(dog, "骨头");

        Person p2 = new Person("老李", 25);
        // 使用多态:创建宠物猫
        Animal cat = new Cat(3, "灰");
        p2.keepPet(cat, "鱼");
    }
}
年龄为30岁的老王养了一只黑颜色的2岁的狗
2岁的黑颜色的狗两只前腿死死的抱住骨头猛吃。
年龄为25岁的老李养了一只灰颜色的3岁的猫
3岁的灰颜色的猫眯着眼睛侧着头吃鱼。

Process finished with exit code 0




接口和抽象类的综合案例

1、需求

  • 编写带有接口和抽象类的标准Javabean类:
    • 我们现在有乒乓球运动员和篮球运动员,乒乓球教练和篮球教练。
    • 为了出国交流,跟乒乓球相关的人员都需要学习英语。
    • 请用所有知识分析,在这个案例中,哪些是具体类,哪些是抽象类,哪些是接口?
  • 乒乓球运动员:姓名、年龄、学打乒乓球,说英语。
  • 篮球运动员:姓名、年龄、学打篮球。
  • 乒乓球教练:姓名、年龄、教打乒乓球,说英语。
  • 篮球教练:姓名、年龄、教打篮球。


2、分析

  • 可以从以上需求看出:

    • 他们都有共同的属性,因此可以定义一个人的类,来定义这些共同的属性,让他们继承
    • 乒乓球运动员和乒乓球教练都有说英语的共同行为,因此需要定义一个说英语的接口,让他们实现
    • 运动员都有一个共同的行为,那就是学习打球,但是由于球类不同,因此这个学习方法是抽象的,必须让运动员自己实现。
    • 教练都有一个共同的行为,那就是教学生打球,但是由于球类不同,因此这个教学方法是抽象的,必须让教练自己实现。
    • 最后要注意一个细节:
      • 由于人类是运动员和教练的顶级父类,因此必须是抽象的。
      • 因为此时不能让外界直接创建顶层父类人的对象,此时是没有意义的。
  • 分析结构图

    在这里插入图片描述



3、实现

  • 人类(顶层父类)

    package com.app.demo25_interface_abstract.been;
    
    /**
     * 人类:顶层父类
     * 注意:
     * 1、人类是顶层父类,主要作用就是定义所有子类的共同属性、行为,这样子类就不需要重复定义。
     * 2、因此构造对象的时候,也是构造子类的对象,如果直接构造顶层父类:人类的对象,此时是没有意义的。
     * 3、所以,顶层父类是定义为抽象类的:目的就是为了不让外界直接创建顶层父类的对象。
     */
    public abstract class Person {
        /*
            定义子类的共同属性:
                姓名、年龄
         */
        private String name;
        private int age;
    
        /*
            提供无参数的构造器
            提供带全部参数的构造器
         */
        public Person() {}
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        /*
            提供全套的get和set方法,
            方便合理暴露其属性的取值和赋值
         */
        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; }
    }
    

  • 运动员类(人类的子类,所有运动员的父类)

    package com.app.demo25_interface_abstract.been;
    
    /**
     * 运动员类
     * 必须定义为抽象类:
     * 1、因为运动员的学习行为方法是定义为抽象方法
     * 2、因为每个运动员要学习的内容不一样,因此需要定义为抽象方法,让子类必须重写运动员类(父类)的学习方法
     */
    public abstract class Sportsman extends Person{
        /*
            提供无参数的构造器
            提供带全部参数的构造器
         */
        public Sportsman() {}
        public Sportsman(String name, int age) {
            // super(): 将构造运动员对象的属性传递给父类(顶层父类:人类)
            super(name, age);
        }
    
        /*
            定义运动员的共同行为:学习
            必须定义为抽象方法,让每个运动员自己实现。
            因为每个运动员要学习的内容都不一样。
         */
        public abstract void study(String name);
    }
    

  • 教练类(人类的子类,所有教练的父类)

    package com.app.demo25_interface_abstract.been;
    
    /**
     * 教练类
     * 必须定义为抽象类:
     * 1、因为教练的教学行为方法是定义为抽象方法
     * 2、因为每个教练要教学的内容不一样,因此需要定义为抽象方法,让子类必须重写教练类(父类)的教学方法
     */
    public abstract class Coach extends Person{
        /*
            提供无参数的构造器
            提供带全部参数的构造器
         */
        public Coach() {}
        public Coach(String name, int age) {
            // super(): 将构造教练对象的属性传递给父类(顶层父类:人类)
            super(name, age);
        }
    
        /*
            定义教练的共同行为:教学
            必须定义为抽象方法,让每个教练自己实现。
            因为每个教练要教学的内容都不一样。
         */
        public abstract void teach(String name);
    }
    

  • 英语接口(乒乓球相关的需要实现说英语方法)

    package com.app.demo25_interface_abstract.been;
    
    /**
     * 定义英语接口:乒乓球运动员、教练都要说英语
     */
    public interface English {
        /*
            定义说英语的抽象方法:
            1、接口中的方法,默认是公开、抽象的
            2、因此实现接口时,必须重写该方法
            3、所以修饰符:public、abstract也可以省略不写!
         */
        void speakEnglish(String name);
    }
    

  • 乒乓球运动员类(运动员的子类,英语接口的实现类)

    package com.app.demo25_interface_abstract.been;
    
    /**
     * 乒乓球运动员类
     * 1、需要继承运动员类:Sportsman
     * 2、需要实现英语接口:English
     * 3、因此必须重写运动类、英语接口的方法
     */
    public class PingPongSportsman extends Sportsman implements English{
        /*
            提供无参数的构造器
            提供带全部参数的构造器
         */
        public PingPongSportsman() {}
        public PingPongSportsman(String name, int age) {
            // super(): 将构造乒乓球运动员对象的属性传递给运动员类(父类)
            super(name, age);
        }
    
        // 1、重写父类的学习方法
        @Override
        public void study(String name) {
            System.out.println("乒乓球运动员" + name + "正在学习如何打乒乓球~~");
        }
    
        // 2、重写英语接口的说英语方法
        @Override
        public void speakEnglish(String name) {
            System.out.println("乒乓球运动员" + name + "正在说着一口流利的英语 ~^_^~");
        }
    }
    

  • 乒乓球教练(教练的子类,英语接口的实现类)

    package com.app.demo25_interface_abstract.been;
    
    /**
     * 乒乓球教练类
     * 1、需要继承教练类:Coach
     * 2、需要实现英语接口:English
     * 3、因此必须重写教练类、英语接口的方法
     */
    public class PingPongCoach extends Coach implements English{
        /*
            提供无参数的构造器
            提供带全部参数的构造器
         */
        public PingPongCoach() {}
        public PingPongCoach(String name, int age) {
            // super(): 将构造器乒乓球教练对象的属性传递给教练类(父类)
            super(name, age);
        }
    
        // 1、重写父类的教学方法
        @Override
        public void teach(String name) {
            System.out.println("乒乓球教练" + name + "正在向学员们传授最正宗的乒乓球打法~~");
        }
    
        // 2、重写英语接口的说英语方法
        @Override
        public void speakEnglish(String name) {
            System.out.println("乒乓球教练" + name + "正在飙着一口流利的英语 @^_^@");
        }
    }
    

  • 篮球运动员类(运动员的子类)

    package com.app.demo25_interface_abstract.been;
    
    /**
     * 篮球运动员类
     * 1、需要继承运动员类:Sportsman
     * 2、因此必须重写运动类的方法
     */
    public class BasketballSportsman extends Sportsman{
        /*
            提供无参数的构造器
            提供带全部参数的构造器
         */
        public BasketballSportsman() {}
        public BasketballSportsman(String name, int age) {
            // super(): 将构造器篮球运动员对象的属性传递给运动员类(父类)
            super(name, age);
        }
    
        // 1、重写父类的学习方法
        @Override
        public void study(String name) {
            System.out.println("篮球运动员" + name + "正在学习如何打篮球~~");
        }
    }
    

  • 篮球教练类(教练的子类)

    package com.app.demo25_interface_abstract.been;
    
    /**
     * 篮球教练类
     * 1、需要继承教练类:Coach
     * 2、因此必须重写教练类的方法
     */
    public class BasketballCoach extends Coach{
        /*
            提供无参数的构造器
            提供带全部参数的构造器
         */
        public BasketballCoach() {}
        public BasketballCoach(String name, int age) {
            // super(): 将构造篮球教练对象的属性传递给教练类(父类)
            super(name, age);
        }
    
        // 1、重写父类的教学方法
        @Override
        public void teach(String name) {
            System.out.println("篮球教练" + name + "正在向学员们传授最正宗的篮球技术~~");
        }
    }
    


  • 测试类

    package com.app.demo25_interface_abstract.test;
    
    import com.app.demo25_interface_abstract.been.*;
    
    /**
     * 测试类
     */
    public class Test {
        public static void main(String[] args) {
            // 创建乒乓球教练对象
            PingPongCoach ppc = new PingPongCoach("张飞", 66);
            // 乒乓球教练开始教学
            ppc.teach(ppc.getName());
            // 乒乓球教练开始飙英语
            ppc.speakEnglish(ppc.getName());
    
            System.out.println();
    
            // 创建乒乓球运动员对象
            PingPongSportsman pps = new PingPongSportsman("甄姬", 23);
            // 乒乓球运动员开始学习
            pps.study(pps.getName());
            // 乒乓球运动员开始说英语
            pps.speakEnglish(pps.getName());
    
    
            System.out.println("------------------------");
    
            // 创建篮球教练对象
            BasketballCoach bbc = new BasketballCoach("赵云", 65);
            // 篮球教练开始教学
            bbc.teach(bbc.getName());
    
            System.out.println();
    
            // 创建篮球运动员对象
            BasketballSportsman bbs = new BasketballSportsman("蔡徐坤", 25);
            // 篮球运动员开始学习
            bbs.study(bbs.getName());
        }
    }
    



4、运行结果

乒乓球教练张飞正在向学员们传授最正宗的乒乓球打法~~
乒乓球教练张飞正在飙着一口流利的英语 @^_^@

乒乓球运动员甄姬正在学习如何打乒乓球~~
乒乓球运动员甄姬正在说着一口流利的英语 ~^_^~
------------------------
篮球教练赵云正在向学员们传授最正宗的篮球技术~~

篮球运动员蔡徐坤正在学习如何打篮球~~

Process finished with exit code 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5G工业互联阶段二:5G产线工控网

5G深入核心生产环节的第二个阶段,主要是实现产线内部通信5G化。以工控5G化为主,并综合考虑数采、安全通信等。大致示意如下: 工艺部件工控通信5G化: 如上图所述,以产线主PLC为中心,大致分为主PLC到产线内机…

Spark 3.0 - 5.ML Pipeline 实战之电影影评情感分析

目录 一.引言 二.Stage1 - 数据准备 1.数据样式 2.读取数据 3.平均得分与 Top 5 4.训练集、测试集划分 三.Stage-2 - Comment 分词 1.Tokenizer 🙅🏻‍♀️ 2.JieBa 分词 🙆🏻‍♀️ 2.1 Jieba 分词示例 2.2 自定义 Jie…

系统设计 system design 干货笔记

参考大佬的博客 https://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache 参考的github https://github.com/donnemartin/system-design-primer#step-2-review-the-scalability-article scalability 1 Clone 每台服务器都包含完全相同的代码库&#…

SOLIDWORKS 2023 3D Creator 云端结构设计新功能

3DEXPERIENCE平台更新版本已经与大家见面,今天微辰三维与大家分享3D Creator 云端结构设计新功能,让我们先一起来看看视频—— SOLIDWORKS 2023 3D 云端结构设计新功能点击观看3D Creator 云端结构设计新功能 如今,我们的设计生产工作不仅要面…

Linux进阶-Makefile

make工具:找出修改过的文件,根据依赖关系,找出受影响的相关文件,最后按照规则单独编译这些文件。 Makefile文件:记录依赖关系和编译规则。 Makefile本质:无论多么复杂的语法,都是为了更好地解决…

m认知无线电网络中频谱感知的按需路由算法matlab仿真

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 使用无线电用户的频率范围在 9kHz 到 275GHz[3],由于无线通信环境中的干扰、信道衰落和无线电收发设备自身属性等的影响,大部分无线电设备只能工作在 50GHz 以下。…

融媒体解决方案-最新全套文件

融媒体解决方案-最新全套文件一、建设背景二、建设思路三、建设方案二、获取 - 融媒体全套最新解决方案合集一、建设背景 随着互联网的快速发展,社会已步入全媒体时代,各媒体机构积极探索传统媒体转型之路。 为巩固壮大主流思想舆论,不断提…

对数的应用:放缩x轴或者y轴以更好地表达函数的结果

对数尺度的作用 yAxnyAx^nyAxn 在实验中 AAA 和 nnn 都是未知数,现在我想求出 AAA 和 nnn假设 n1.5,A1n1.5, A1n1.5,A1,那么我们可以做个图看看 x np.linspace(1,10,10) y 1 * x**3 plt.plot(y)如果我做实验恰好得到一些点,那么我很难知道…

【全志T113-S3_100ask】14-1 linux采集usb摄像头实现拍照(FFmpeg、fswebcam)

【全志T113-S3_100ask】14-1 linux采集usb摄像头实现拍照背景(一)FFmpeg1、简介:2、交叉编译FFmpeg3、测试(二)fswebcam1、背景2、交叉编译fswebcam3、测试背景 在开发板上有一个csi转dvp接口的摄像头,但是…

前端入门到放弃(VUE、ES6,简单到不得了)

VSCode 使用 1、安装常用插件 切换到插件标签页 安装一下基本插件 2、创建项目 vscode 很轻量级,本身没有新建项目的选项,创建一个空文件夹就可以当做一个项目 3、创建网页 创建文件,命名为 index.html 快捷键 !快速创建网页模板 h1 回…

精益管理学会|什么是ECRS改善方法?

ECRS是IE工程改善、精益生產管理改善的四大法宝。 针对现有的生产线进行改善时,常见的做法是对现有的生产线进行绘制各工站的工时山积表如下圖所見,然后对各工站的动作单元进行ECRS 改善。 E:不需要的可进行 Eliminate (取消&…

Telegraf-Influxdb-Grafana容器化部署拓展(Https、AD域、告警集成)并监控Cisco设备指标

前言: 还记得在去年的笔记中提到过使用python的pysnmp模块,配合Influxdb,Grafana收集Cisco设备指标。链接如下:https://blog.csdn.net/tushanpeipei/article/details/117329794 。在该实例中,我们通过python编写脚本收…

第一节 Maven核心程序解压与配置

1、Maven 官网地址 首页: Maven – Maven Repositories (apache.org)https://maven.apache.org/repositories/index.html下载页面: Maven – Download Apache Mavenhttps://maven.apache.org/download.cgi下载链接: 具体下载地址&#xff…

【微信小程序】列表渲染wx:for

&#x1f3c6;今日学习目标&#xff1a;第十二期——列表渲染wx:for &#x1f603;创作者&#xff1a;颜颜yan_ ✨个人主页&#xff1a;颜颜yan_的个人主页 ⏰预计时间&#xff1a;20分钟 &#x1f389;专栏系列&#xff1a;我的第一个微信小程序 文章目录前言效果图< block…

同花顺_代码解析_交易系统_J01_08

本文通过对同花顺中现成代码进行解析&#xff0c;用以了解同花顺相关策略设计的思想 目录 J_01 MACD系统 J_02 布林带系统 J_03 趋向指标 J_04 乖离系统 J_05 KDJ系统 J_07 容量比率系统 J_08 威廉系统 J_01 MACD系统 分析MACD柱状线&#xff0c;由绿变红(负变正)&…

Bootstrap实例(四)

目录&#xff1a; &#xff08;1&#xff09;bootstrtap实例&#xff08;轮廓&#xff09; &#xff08;2&#xff09;bootstrap三列布局 &#xff08;3&#xff09;bootstrap&#xff08;标签页&#xff09; &#xff08;4&#xff09;bootstrap&#xff08;end&#xff0…

56.Django的admin后台管理使用方法

准备 Django框架提供了一个自动化后台管理功能&#xff0c;对网站数据的后台维护&#xff0c;仅仅需要进行非常简单的配置和编写极少的代码即可实现。 首先创建一个Django项目admin_study&#xff0c;然后创建连接数据库&#xff0c;在数据库中创建好表数据库后&#xff0c;进…

[附源码]java毕业设计小区物业管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

头歌-信息安全技术-用Python实现自己的区块链、支持以太坊的云笔记服务器端开发、编写并测试用于保存云笔记的智能合约、支持以太坊的云笔记小程序开发基础

头歌-信息安全技术-用Python实现自己的区块链、支持以太坊的云笔记服务器端开发、编写并测试用于保存云笔记的智能合约、支持以太坊的云笔记小程序开发基础一、用Python实现自己的区块链1、任务描述2、评测步骤(1)打开终端&#xff0c;输入两行代码即可评测通过二、支持以太坊的…

MySQL的高阶学习:索引、B+树

1.索引 索引是一种数据结构&#xff0c;如果没有索引&#xff0c;查找一个数据就需要从第一页开始全局检索直至找到需要的数据&#xff0c;有了索引可以先在目录中根据拼音查找到该数据所在的页数&#xff0c;因此通过索引可以大大减少了查询时间。 索引有两种存储类型&#xf…