zoukankan      html  css  js  c++  java
  • Java 接口

    一、抽象类

      抽象类是普通的类和接口之间的一种中庸之道。

    1. 如果一个类包含抽象方法,该类必须被限定为抽象类。

    2. 抽象类可以不含任何抽象方法(一般用来阻止产生该类的对象,抽象类不可以用new创建对象,因为调用抽象方法没意义)

    3. 抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。

    4. 如果一个类继承抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为abstract类。

    二、接口

      interface表示一个完全抽象的类。

    1. 接口中的变量会被隐式地指定为public static final变量。

    2. 接口中只能存在public abstract 方法

    抽象类和接口的区别

    1.语法层面上的区别

    1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

    2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

    3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

    4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。

    2.设计层面上的区别

    1)抽象类是对一种事物的抽象,而接口是对行为的抽象。

    2)简言之抽象类是一种功能不全的类,接口只是一个抽象方法声明和静态不能被修改的数据的集合,两者都不能被实例化。

    3)设计层面不同,抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计,即如果接口进行了变更,则所有实现这个接口的类都必须进行相应的改动。

    interface Alarm {
        void alarm();
    }
     
    abstract class Door {
        void open();
        void close();
    }
     
    class AlarmDoor extends Door implements Alarm {
        void oepn() {
        }
        void close() {
        }
        void alarm() {
        }
    }
  • 相关阅读:
    跨站脚本攻击
    性能测试总述
    转:KPI(Key Performance Indicator,关键绩效指标)
    《C#与.NET3.5高级程序设计(第4版)》笔记2
    三层架构的一点小小的认识(很小很小)
    《C#与.NET3.5高级程序设计(第4版)》笔记3
    windows 2008无线网络"没有正确配置为使用IP协议" 错误解决办法
    《C#与.NET3.5高级程序设计(第4版)》笔记6
    A+=B和A=A+B真的有区别吗
    《C#与.NET3.5高级程序设计(第4版)》笔记5
  • 原文地址:https://www.cnblogs.com/anxiao/p/7028419.html
Copyright © 2011-2022 走看看