• 知识盲点汇总


    知识盲点汇总

    1. 多态

    • 多态中,编译看左边,运行看右边

    • 多态的前提是继承

    • 要有方法的重写

    • 父类引用指向子类对象,如:Animal a = new Dog(); -- 小到大,向上转型

    什么可以被重写?

    1. 普通成员方法 (由于存在重写, 所以调用了父类的方法声明, 使用了子类的方法体)

    2. 成员变量 (由于不存在重写, 所以直接使用父类的)

    3. 静态方法 (静态资源随着类地加载而加载, 重写的静态方法和父类的静态方法不是同一个类, 所以不是重写)

    多态的好处

    1. 可以把不同的子类对象当做父类来看, 可以屏蔽不同子类对象之间的差异, 写出可以通用的代码, 做出通用的编程.
    2. 统一调用的标准, 一切向父类看齐
    3. 提高了程序的扩展性和可维护性

    2.抽象类

    抽象类可实现多态. 关键字: abstract

    • 使用abstract关键字的方法为抽象方法

      注意: 如果这个类有抽象方法, 那么这个类也必须是抽象类, 用abstract修饰. 抽象类里面可以有普通方法

    • 子类如果继承了抽象的父类, 子类两条路: 把所有抽象方法都重写 或者 是一个抽象子类

    • 抽象类本身不能创建对象, 但是为什么提供构造方法? 是为了子类创建对象时调用.

    • 抽象类中可以拥有成员变量常量

    3.final关键字

    1. 父类被final修饰后, 变成了最终的类, 不能被继承.
    2. 当变量被final修饰后, 就成了常量, 值不能被修改.
    3. 当方法被final修饰后, 就成了最终方法, 不能被重写.

    4.接口

    接口是一种特殊的抽象类, 也可以实现多态. 关键字: interface

    1. 接口没有构造方法

    2. 实现接口之后必须重写所有的抽象方法, 或者这个类必须是抽象类.

    3. 接口没有成员变量, 但是可以有常量(接口里的变量值不能修改)

      即使你在接口里这么写: String name = "张三" 这么写, 它也默认是finalstatic修饰的 (可以截至使用类名点进行调用)

    4. 接口里不可以有普通方法

    5. 接口中的抽象方法可以省略publicabstract关键字

      例如:

      interface Inter {
          // 以下这两种写法是一样的, 接口中可以省略public和abstract
          // public abstract void show();
          // void show();
      }
      
    6. 接口中的方法重写时, 要有足够的权限, 如果接口里都是public , 重写的时候权限必须要比public要大, 或者为 public才可以

    7. JDK1.8之后(包括JDK1.8) 接口扩展 (不常用)

      • default 修饰的方法可以有方法体, 并且接口的实现类可以进行重写, 重写之后调用实现类的方法体, 否则调用接口中的方法体.
      • static修饰的方法根普通的静态类一样, 实现类不可以重写, 可以直接使用接口名点进行调用

    5.接口复杂用法

    1. 接口和接口之间是继承关系才可以关联

      示例:

      // 创建接口1
      interface Mapper1 {
      	void save();
      	void get();
      }
      // 创建接口2
      interface Mapper2 {
      	void add();
      	void update();
      }
      // 接口和接口之间是继承关系 (Mapper3 继承了 Mapper1 和 Mapper2中的方法)
      interface Mapper3 extends Mapper1, Mapper2{
      	
      }
      

      上例中: 如果一个实现类实现了Mapper3接口, 那么需要重写Mapper1, Mapper2, Mapper3中的所有抽象方法

    2. 实现类和接口使用implements

      一个类可以实现多个接口, 例如:

      class Impl2 implements Mapper1, Mapper2 {
          // 重写 Mapper1 和 Mapper2 这两个接口的抽象方法都重写
      }
      
    3. 实现类也可以继承一个类的同时实现多个接口. 必须是先继承父类再实现接口, 有先后顺序

  • 相关阅读:
    Yii2中request的使用
    git在本地仓库直接使用rm彻底删除文件,服务端还是存在
    oc基础-oc中之集合NSSet,NSMutableSet
    oc基础-oc中之集合NSArray,NSMutableArray
    oc基础-NSString和NSMutableString区别
    oc基础-Foundation中NSString类型的一些用法
    oc基础-foundation框架中的常用结构体
    oc基础-设计代理模式理解
    oc基础-protocol协议的使用
    block关键字的使用
  • 原文地址:https://www.cnblogs.com/zpKang/p/12887722.html
Copyright © 2020-2023  润新知