zoukankan      html  css  js  c++  java
  • 抽象类与接口

    1.抽象类可以有构造方法,接口没有构造方法

    Multiple markers at this line
    - Interfaces cannot have constructors
    - Syntax error on token "}", delete this
    token

    2.一个子类只能继承一个抽象类,但能实现多个接口

    java不支持多重继承

    3.抽象类可以有普通成员变量,接口没有普通成员变量

     成员变量(在类中定义,    访问修饰符   修饰符   type  name  = value)

     Abstract methods do not specify a body

    4.抽象类和接口都可有静态成员变量,抽象类中静态成员变量访问类型任意,接口只能public static final(默认)

     

    5.抽象类可以没有抽象方法,抽象类可以有普通方法,接口中都是抽象方法

    抽象类和普通类的区别就在于,抽象类不能被实例化,就是不能被new出来,即使抽象类里面没有抽象方法。
    抽象类的作用在于子类对其的继承和实现,也就是多态;
    而没有抽象方法的抽象类的存在价值在于:实例化了没有意义,因为类已经定义好了,不能改变其中的方法体,但是实例化出来的对象却满足不了要求,只有继承并重写了他的子类才能满足要求。所以才把它定义为没有抽象方法的抽象类

    接口:无论你加不加abstract,所有实现指定接口的类都必须重写并实现该接口的所有方法

    6.抽象类可以有静态方法,接口不能有静态方法

    java8接口中可以有default类型的方法,实现类可以选择实现该方法。 

    jdk8已经支持接口加入静态方法,但据说是为了lambda(函数式编程)

    详情:http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Lambda-QuickStart/index.html#section1

    7. 抽象类中的方法可以是public、protected;接口方法只有public




    特点

    抽象类

    接口

    构造方法

    普通成员变量

    普通方法

    可以有非抽象的

    必须是抽象的

    抽象方法的访问类型

    public、protected和默认

    只能是public的,默认public abstract

    静态方法

    可以有

    静态成员变量

    有 public static final的

    其他类

    只能继承一个抽象类

    可以实现多个接口

    应用场景

     代码重用 模块之间通信契约

     

  • 相关阅读:
    awk使用和详解
    Python【map、reduce、filter】内置函数使用说明
    virtualenv -- python虚拟沙盒
    python--threading多线程
    scrapy入门教程
    用两个栈实现队列
    重建二叉树
    从尾到头打印链表
    替换空格
    二维数组的查找
  • 原文地址:https://www.cnblogs.com/tk55/p/8109904.html
Copyright © 2011-2022 走看看