美文网首页
解读抽象类和接口

解读抽象类和接口

作者: Apple_Boy | 来源:发表于2019-07-05 11:08 被阅读0次

    抽象类和接口的比较:

    两者默认方法修饰public abstract;

    接口默认常量修饰:public static final,抽象类可以有普通方法、变量、构造方法,接口都不可以,jdk1.8以后可以有default方法;

    两者都不能直接实例化(可通过匿名内部类,一次使用就消亡) ,有抽象方法的类一定为抽象类

    类、接口之间的关系:

    类和类:单继承,多重继承    类和接口:继承一个类,实现多个接口   接口和接口:多继承

    抽象类:比较强的is -a父子---抽象类 ,形状:圆形,三角形--长宽   动物:猫,狗--睡觉行为

    模板模式一种规范--结合项目  BaseServlet  BaseJpanel

    Numer类是BigInteger/Decimal类的抽象父类

    GrgorianCalendar是抽象类Calendar的一个具体子类

    接口:弱的like---接口  飞:鸟,飞机

    Comparable接口定义了compareTo方法,用于比较对象,没有强烈的父子关系

    **Cloneable接口:是一个特殊情况,不包括常量和抽象方法

    一个带空体的接口称为标记接口

    总结:

    抽象类:模板模式,作为多个子类的通用模板,子类在其基础上进行拓展、改造,但是大致会保持抽象类的行为方式

    接口:定义的是一种规范,是多个类共同的公告行为规范接口之间实现多继承,一个类实现多个接口

    使用:extends父类  implements 接口1,2,3..

    抽象类与接口的使用探索:

    始终记住,在接口或抽象类之间进行选择并不是非此即彼的情况,在没有适当分析的情况下选择一个都会产生相同的结果。在了解了手头的问题后,必须明智地作出选择。让我们试着把一分析一些情况:

    抽象类让你定义了一些行为,使它们成为应用程序框架内的优秀候选者。

    让我们以HttpServlet作为一个例子。如果你正在使用servlet技术开放Web应用程序,那么它是一个主要的必须继承的类。正如我们所知道的,每个servlet都有一个明确的生命周期阶段,即初始化、服务和销毁。如果我们创建的每一个servlet,我们必须反复编写关于初始化和销毁的相同的代码,这将非常痛苦。

    JDK设计师使HttpServlet为抽象类解决这个问题。它已经为servlet初始化和销毁它编写了所有基本代码。您只需重写编写应用程序处理相关代码的某些方法,即可。有道理,对吗?

    你能在接口上面添加特性吗?不,即使你能,对大多数无辜程序员来说,设计也会像地狱一样。

    现在,让我们看看接口的用法。一个接口只提供契约,它让实现类负责来提每一个方法。

    接口最适合于只定义具有种特性的情况,并且希望强制所有实现都实现这些特性。

    我希望以集合框架中的Map为例。它只提供规则,Map在使用时应该如何表现。它应该存储键值对,值应该用键访问等。

    这些规则在接口中以抽象方法的形式定义。

    所有的实现类(如HashMap,HashTable,TreeMap或WeakHashMap)以不同的形式实现了所有的方法,从而它们表现出了不同的特征。

    另外,接口可以用于确定分离的责任。例如HashMap实现了Map ,Serializable,和Cloneable接口。每个单独的接口定义了责任,实现类选择性的实现想要实现的功能,接口只提供了小一个范围了的功能。

    最后,再举一种用法,实际上就多线程的例子,如new Thread(Runnable task),Thread类要求传入一个实现Runnable接口的对象,然后Thread类对象会调用接口上实现的方法

    相关文章

      网友评论

          本文标题:解读抽象类和接口

          本文链接:https://www.haomeiwen.com/subject/qzcshctx.html