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 条评论) |