Java的接口

Java是面向对象的语言,类在我看来是组成单位,是对象属性和方法的一个集合。而接口表现则为抽象,顾名思义一个接口就是一个功能的实现。而不是具体的人类,它更像是一个工具,在于如何使用,interface 则是接口的关键字(代表)。

例如:

public interface Animal

{

public void eat(); //任何类型 final, static 字段

public void play(); //抽象方法

}

注意:

1.接口中所有的方法必须是抽象方法(在接口中没有构造方法)

2.接口支持多继承(可深可广),也因为本身无法被实例化(就是接口方法不能有{}),所以接口不是被类继承了,而是要被类实现(也就是实例化)

3.除非实现接口的类是抽象类,否则该类要实现接口中的所有方法

4.接口不能包含成员变量,除了 static 和 final 变量。

接口特性:

接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是public abstract,其他修饰符都会报错)

接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。

说完接口,我们说一下接口怎么继承?

接口的继承使用extends关键字,子接口继承父接口的方法,而这里就可以允许多继承了,毕竟只是功能

例如:

public interface Sports

{

public void setHomeTeam(String name);

public void setVisitingTeam(String name);

}

public interface Football extends Sports,Animal

{

public void homeTeamScored(int points);

public void visitingTeamScored(int points);

public void endOfQuarter(int quarter);

}

注意:Football 虽然没有写出所有的方法,但是功能是叠加的,3+2+2=7

我们接下来说一下怎么用(实现)?

公式:类名 implements 接口名称[其他,接口,名称]

例如:

public class dog implements Animal

{

public static void main(String args[])

{

dog d = new dog();

d.eat();

d.play();

}

public void eat()

{

System.out.println("dog eats");

}

public void play()

{

System.out.println("dog play ");

}

}

在接口的实现里有特殊的一类,那就是标记接口

标记接口是没有包含任何方法和属性的接口.它仅仅表明它的类属于一个特定的类型,供其他代码来测试允许做一些事情。

标记接口作用:简单形象的说就是给某个对象打个标(盖个戳),使对象拥有某个或某些特权。

例如:

public interface EventListener{}

主要用于以下两种目的:

1.建立一个公共的父接口

正如EventListener接口,这是由几十个其他接口扩展的Java API,你可以使用一个标记接口来建立一组接口的父接口。例如:当一个接口继承了EventListener接口,Java虚拟机(JVM)就知道该接口将要被用于一个事件的代理方案。

2.向一个类添加数据类型:

这种情况是标记接口最初的目的,实现标记接口的类不需要定义任何接口方法(因为标记接口根本就没有方法),但是该类通过多态性变成一个接口类型

最后说一下接口实现,需要注意:

1.类在实现接口的方法时,不能抛出强制性异常

2.类在重写方法时要保持一致的方法名,并且应该保持相同或者相兼容的返回值类型

3.如果实现接口的类是抽象类,那么就没必要实现该接口的方法

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();