zoukankan      html  css  js  c++  java
  • 知识盲点汇总

    知识盲点汇总

    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. 实现类也可以继承一个类的同时实现多个接口. 必须是先继承父类再实现接口, 有先后顺序

  • 相关阅读:
    CREATE AGGREGATE
    技术文档列表
    jQuery 判断表单中多个 input text 中至少有一个不为空
    Java实现 蓝桥杯 算法提高 奥运会开幕式
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最大值路径
    Java实现 蓝桥杯 算法提高 最大值路径
    Java实现 蓝桥杯 算法提高 最大值路径
  • 原文地址:https://www.cnblogs.com/zpKang/p/12887722.html
Copyright © 2011-2022 走看看