什么是接口?
Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
接口的两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。
在Java语言规范中,一个方法的特征仅包括方法的名字,参数的数目和种类,而不包括方法的返回类型,参数的名字以及所抛出来的异常。在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载方法。但在Java编译器检查方法的置换时,则会进一步检查两个方法(分处超类型和子类型)的返还类型和抛出的异常是否相同。
接口继承和实现继承的规则不同,一个类只有一个直接父类,但可以实现多个接口。
Java接口本身没有任何实现,因为Java接口不涉及表象,而只描述public行为,所以Java接口比Java抽象类更抽象化。
Java接口的方法只能是抽象的和公开的,Java接口不能有构造器,Java接口可以有public,静态的和final属性。
接口把方法的特征和方法的实现分割开来。这种分割体现在接口常常代表一个角色,它包装与该角色相关的操作和属性,而实现这个接口的类便是扮演这个角色的演员。一个角色由不同的演员来演,而不同的演员之间除了扮演一个共同的角色之外,并不要求其它的共同之处。
Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
接口的两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。
在Java语言规范中,一个方法的特征仅包括方法的名字,参数的数目和种类,而不包括方法的返回类型,参数的名字以及所抛出来的异常。在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载方法。但在Java编译器检查方法的置换时,则会进一步检查两个方法(分处超类型和子类型)的返还类型和抛出的异常是否相同。
接口继承和实现继承的规则不同,一个类只有一个直接父类,但可以实现多个接口。
Java接口本身没有任何实现,因为Java接口不涉及表象,而只描述public行为,所以Java接口比Java抽象类更抽象化。
Java接口的方法只能是抽象的和公开的,Java接口不能有构造器,Java接口可以有public,静态的和final属性。
接口把方法的特征和方法的实现分割开来。这种分割体现在接口常常代表一个角色,它包装与该角色相关的操作和属性,而实现这个接口的类便是扮演这个角色的演员。一个角色由不同的演员来演,而不同的演员之间除了扮演一个共同的角色之外,并不要求其它的共同之处。
java不允许多重继承,也就是说一个子类只能有一个父类,Son extends FatherA,FatherB 是错误的
为了弥补这点不足,java允许实现多个接口,Son extends FatherA implements AnotherFatherA,AnotherFatherB是允许的
接口中的方法没有实体,就这一点而言就相当于abstact class,如:
interface ainter{
void dosth(int i);
}
ainter是一个接口,它仅仅声明了一个方法dosth,而没有具体实现它
class aclass implements ainter
{
public void dosth(int i) {
//在这里你可以不作任何处理,但是必须实现方法体
}
}
aclass实现了ainter这个接口,因此它必须实现ainter中的方法dosth
另,abstact class示例:
abstract class Canine { public abstract String speak(); }就像接口一样,它没有方法实体
也就是说,A继承了B,但却想使用C的一个方法,但又不能再继承,所以就使用了C的接口,
为了弥补这点不足,java允许实现多个接口,Son extends FatherA implements AnotherFatherA,AnotherFatherB是允许的
接口中的方法没有实体,就这一点而言就相当于abstact class,如:
interface ainter{
void dosth(int i);
}
ainter是一个接口,它仅仅声明了一个方法dosth,而没有具体实现它
class aclass implements ainter
{
public void dosth(int i) {
//在这里你可以不作任何处理,但是必须实现方法体
}
}
aclass实现了ainter这个接口,因此它必须实现ainter中的方法dosth
另,abstact class示例:
abstract class Canine { public abstract String speak(); }就像接口一样,它没有方法实体
也就是说,A继承了B,但却想使用C的一个方法,但又不能再继承,所以就使用了C的接口,
接口就是给出一些没有内容的方法,类似于C++中的虚类。到具体用的时候再由用的方法自己定义内容,要注意的是想用接口必须实现接口的所有方法。
其实是因为java不支持多继承才产生了接口
。
其实是因为java不支持多继承才产生了接口