zoukankan      html  css  js  c++  java
  • 【java核心36讲】接口和抽象类的区别

    • 回答
      • 接口和抽象类是java面向对象设计的两个基础机制。
      • 接口是对行为的抽象,他是抽象方法的集合,利用接口可以达到API定义和实现的分离。接口不能实例化/不能包含非常量成员,任何的feild都是默认public static final的意义;没有非静态方法的实现。
      • 抽象类也是不能实例化的类,用abstract关键字修饰class,其目的主要是代码重用,通常抽取相关的java类的公用方法实现或共同的成员变量,然后通过继承的方式达到代码复用的目的。除了不能实例化,同普通的java类没啥区别,可以有0到多个的抽象方法。
      • 实现interface使用implements
      • 继承abstract类使用extends
      • 接口类增加方法的情况下,其实现类都需要做相应的修改。当然java8引入的default方法除外。
      • 抽象类增加方法,其子类只会享受能力扩展,不用担心编译问题。
    • 扩展
      • java不支持多继承的问题
        • 规范了代码实现的同时,也产生了一些局限性,影响着程序的设计结构。
        • 比如有一些场景需要抽象出与具体实现无关的通用逻辑,或者单纯调用关系的逻辑,使用传统的抽象类会陷入单继承的窘境。成熟的做法是:实现工具类呗。
      • 接口类Marker Interface
        • 没有任何抽象方法的接口。目的就是为了生命某些东西,如Cloneable,Serializable等。
        • 相比Annotation,该形式简单直接。但是Annotation可以有参数和值,更加强大。
      • @FunctionalInterface Annotation
        • 只有一个抽象方法的接口。
      • 面向对象的要素
        • 封装:隐藏事务内部的实现细节,以便提高安全性和简化编程。封装提供了合理的边界,避免外部调用者接触到内部的细节。可能会触发更多的问题,如并发问题。
        • 继承:是代码复用的基础机制。
        • 多态:会立刻想到重写/重载/向上转型。多态是同一个行为具有多个不同表现形式或形态的能力。同一个接口使用不同的实例而执行不同操作。
      • 需要遵守的设计原则
        • 单一职责
        • 开关原则
          • 对扩展开放,对修改关闭。
        • 里氏替换
          • 方式可以用父类或者基类的地方,都可以用子类替换。
        • 接口分离
          • 就是接口的单一职责,这个比普通类的更加重要。
        • 依赖反转
          • 这个我感觉应该就是面向接口的编程吧。实体应该是依赖抽象而不是实现。
  • 相关阅读:
    第二个月课堂009python之总结(002)
    python的接口自动化测试+ddt数据驱动(*****)
    python题(002)
    selenium问题归纳一:多个句柄索引会乱的问题
    多测师讲解python讲解__xlwt__模块(拓展莫模块002)
    多测师python面试题__整理和答案(001)高级讲师肖sir
    第二个月课堂012讲解 _ Unittest框架(上)_高级讲师肖sir
    多测师讲解课堂11课__selenium__错归纳_高级讲师肖sir
    ActionChains定位元素
    css使用方法
  • 原文地址:https://www.cnblogs.com/xxxuwentao/p/10188567.html
Copyright © 2011-2022 走看看