java——类——interface

来源:互联网 发布:2016手游大数据 编辑:程序博客网 时间:2024/06/05 14:06

interface

interface可理解为特殊abstract class,但相比abstract class,有以下区别:
  • interface是完全abstract class,所有method默认都为abstract method(可显式使用abstract指定),且默认访问权限为public(若显式指定访问权限,也只能使用public)
  • interface是纯粹abstract class,纯接口class,不允许有non-static数据成员
  • interface所有method都为abstract method,因此interface允许多重继承,interface继承本质就是abstract method(接口)的set union操作
  • interface不允许有non-static数据成员,因此class允许多重继承(实现)interface,不会有c++中的多份数据冲突
interface Jumpable{    void jump();}interface Swimable{    void swim();}interface Flyable{    void fly();}interface Actions extends Jumpable, Swimable, Flyable{}class Animal{}class Fish extends Animal implements Swimable{    public void swim()    {    System.out.println("Fish.swim()");      }}class Frog extends Animal implements Jumpable, Swimable{    public void jump()    {    System.out.println("Frog.jump()");      }    public void swim()    {    System.out.println("Frog.swim()");      }}

interface的类作用域

interface作为特殊abstract class,自然也属于class,而class有其自身类作用域,因此允许在interface中定义static成员(static数据成员和static方法成员)
  • static数据成员:interface中定义数据成员默认为public final static(若显式指定也只能使用public&final&static组合),final修饰static数据成员,因此不允许blank final
  • static方法成员:static方法成员必须实现
interface Jumpable{    abstract void jump();        int jSpeed = 5;}
原创粉丝点击