2020.7.28日 多态

发布于 16 天前  6 次阅读


1.学习内容

  • Java接口

    • java接口就是一种规则标准
    • 当一个类所有方法都是抽象的,可以使用interface定义,定义为接口
    • 接口成员
      • 成员变量:固定修饰符 (public final static)数据类型 变量名 = 值;
      • 成员方法:固定修饰符 返回值 方法名();
      • 固定修饰符:可以省略
    • 接口的优势
      • 解决了多继承不安全的问题
      • 多个类同样方法,接口只实现一个(没有方法体,实现是唯一)
      • 多个类同样方法,继承不知道调用哪个方法(因为多继承有方法体)
    • 编译文件后缀
      • java文件 –> class
      • interface –> class
    • 注意:
      • 接口不能实例化对象
      • 需要子类实现,implements 关键字
      • 换了名词:接口类,实现类
      • 接口支持多继承 extends A,B
  • JDK8 对接口进行了修改

    • 增加了方法体 默认方法 default
      • public default func(){}
      • 接口中,可以有方法体,但是也需要继承才能使用
      • 方便扩展类,继承的类继承默认,不会报错
      • 有点像抽象类,可以重写方法
    • 静态方法修饰
      • 静态方法不能被重写
      • 可以用static修饰
      • public static func(){}
  • Java 多态

    • 一个事物,具备多种形态
    • 多态的前提:
      • 要有继承或者接口实现
      • 要有方法的重写
      • 建立对象
        • 父类或者接口 变量 = new 子类或者实现对象();
    • 多态程序的细节
      • 1.成员变量特点
        • 编译:父类中是否有子类需要的变量,没有就报错
        • 运行:运行父类中的变量
      • 2.方法的特点
        • 编译:看父类中是否有这个方法,没有就报错
        • 运行:优先运行子类中的方法重写,其次才是父类中的方法
      • 结论:
        • 变量:编译运行都是父类
        • 方法:编译看父类,运行看子类
      • 多态的说明
        • 优点:无线扩充子类功能
        • 缺点:只能调用父类子类共性内容
          • 编译时候,找不到子类特定的方法
      • 基本数据转型:
        • 向上转型(自动转换)
          • 小的转换成大的(子类->父类,接口类->实现类)
          • byte->short->int->float->double
        • 向下转型(强制转换)
          • 大的转成小的(父类->子类,实现类->接口类)
          • (强转类型)(需要转换类型)
          • 可以调用子类特有方法
      • 判断对象的类型
        • 关键字:instanceof
        • 使用: 对象 instanceof 类 ,返回一个bool类型
      • 强类型语言和弱类型语言
        • 强制类型:参与运算的数据,必须保证类型的一致性、类型不一致,就会转换类型为一致的
        • 弱类型语言:
      • JVM的动态绑定技术
        • javac的时候 看父类,
        • 运行的时候,JVM会动态的绑定到子类的对象中

2.扩展延伸知识

  • 接口继承多个类的一些问题

    • 1.是否需要都是抽象方法?

      • 除了default方法
    • 2.super()是否能够使用,调用的是哪个方法?

      • 可以调用super(),不知道调用的是啥
    • 3.default 碰撞是什么东西?

      • 两个接口,碰到了同一个被default修饰方法名的方法

3.灵感代办

  • 能够写出接口的定义格式
  • 能够写出接口的实现格式
  • 能够说出接口中的成员特点
  • 能够说出接口和抽象类的区别
  • 能够说出多态的前提
  • 能够写出多态的格式
  • 能够理解多态向上转型和向下转型
  • 能够完成笔记本案例

4.复习内容

  • Redis基本使用复习

    • Redis建立连接池
      • 使用方法redis.ConnectionPool(连接对象)
    • Redis五大基本类型
      • 字符串
        • 介绍:存放字符串
        • 常用:
          • SET,SETEX,GET,MSET,MSETNX,MGET 基本
          • INCR,DECR,INCRBY,DECRBY 字段自增长
          • APPEND追加 STRLEN长度 DEL删除
        • MSET,MGET是同时设置多个字符串或者获取多个字符串
      • 哈希表、
        • 介绍:
          • 有一个String作为哈希表的名称,里面是fields(字段)
          • fields类似字典,键和值对应
          • 适合存储对象
        • 常用
          • HSET,HGET,HMSET,HMGET,HKEYS,HVALUES
          • HGETALL,HEXISTS,HINCRBY,HDEL
      • 列表
        • 一个列表,可以头插,尾插,指定插入
        • 列表操作是入栈出栈,所以使用PUSH和POP
      • 常用
        • LPUSH ,RPUSH,LPOP,RPOP,RPOPLPUSH(进一个出一个)
        • LREM,LLEN,LINDEX,LINSERT,LTRIM,BLPOP,BRPOP
        • BRPOPLPUSH
      • 集合
        • 介绍
          • 是String类型的无需集合
          • 适合去重操作
          • 哈希实现定位,时间复杂度都是O(1)
          • 集合是Set 所以使用S开头
        • 常用
          • SADD,SISMEMBER,SPOP,SREM,SMOVE,SCARD,SSCAN,SINTER,SUNION,SDIFF,SDIFFSTORE
        • SSCAN的游标
          • Sccan key cursor match *匹配什么 count 几条
            • 判断是否迭代完一圈,如果没有,继续返回的cursor迭代
      • 有序结合
        • 介绍
          • 有序的集合,其余特性都一样
          • 有序集合开头字符是Z
        • 常用
          • ZADD,ZSCORE,ZCARD,ZCOUNT,ZRANGE 都差不多用时候再查

5.学习成果&问题


Ares个人进阶之路