您的位置:首页 > 编程语言 > Java开发

Java基础与提高系列-java 接口的Interafce

2017-11-01 17:38 134 查看
Java中所有的成员和方法都在class中但存在一种可以基本理解为与class平行的就是Interface.

一.什么是接口

一个Java 接口(interface)是一些方法特征的集合,这些方法特征来自于具体方法,这些方法符合它们一般来自于一些在系统中不断出现的方法。一个接口只有方法的特征,而没有方法的实现,因此这些方法在不同的地方被实现时,可以具有完全不同的行为。在Java语言中,Java接口还可以定义public的变量。

接口把方法的特征和方法的实现分割开来。这种分割,体现在接口常常代表一个角色(role),它包装与该角色相关的操作和属性,而实现这个接口的类便扮演这个角色的演员(类)。一个角色(接口)可以由不同的演员(类)来演,而不同的演员(类)之间除了扮演一个共同的角色(接口)之外,并不要求有任何其他的共同之处。

二、interface 的具体用法和定义

public interface Test{
public static final int num; //成员常量具有固定的修饰符:public static final
public abstract void method; //成员函数具有固定的修饰符:public abstract
}

public class Testimpl implements Test{
// 实现接口中的所有方法
.....
}


2.1 接口前面的修饰符有两种:一个是public 一个是不加任何东西。

2.2 接口里面的成员都是public static final (公共静态常变量成员)。

2.3 接口里面的方法都是public abstract (公共抽象方法)。

2.4 接口不能定义构造方法。

三、类的具体实现

interface Eat
{
int  i=10;
void eat();
}
class Person implements Eat
{
void eat()
{
int j=this.i;
}
pulic void eat(){}

}


3.1 一个类要实现一个接口的实现关键字是implements

3.2 类里面不能为接口的成员变量赋值

3.3 如果一个非抽象类继承一个接口,则必须重写接口里面的所有方法。

3.4 接口实现多态

接口无法被实例化,但那时一个接口的引用变量可以指向实现它类的一个对象

public class interface_1
{
public static void eat()
{
Eat eat_1=new  Person ();
eat_1.ezt();
}

}


也就是person 实现了Eat() 接口,我们可以通过一个接口的引用 eat_1 来指向一个person的具体对象。

3.5 一个类可以同时实现多个接口。

四、接口的好处与用途

在学习的过程中,会发现接口和多态性以及抽向类有点相关。还有些疑惑:1、比如什么时候用接口什么时候用抽象类。 2、为什么不直接在在类里面写方法,而要写一个接口呢?

1.接口和抽象类都按照“不为实现写代码”的设计原则,这是为了增加代码的灵活性,以应付不断变化的要求。

在Java中,你只能继承一个类,但实现多个接口。所以你继承一个类的时候就无法再继承别的类了。 abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。

接口是用来代表形容词或行为,例如Runnable、Clonable、Serializable等。因此,如果您使用一个抽象类来定义(实现)Runnable和Clonacle,你就不可以使你的类同时实现这 。

接口里的方法全部是抽象方法,抽象类里可以有方法实现。

接口里不可以定义静态方法,抽象类里可以

接口里的变量全部为静态常量,抽象类里可以有普通变量

接口里不可以有构造函数和初始化块,抽象类里可以有。

2接口实际上就是一组规范。关于(不如直接就在这个类中写实现方法岂不是更便捷) 这个问题,可以用(你怎么保证这个接口就一个类去实现呢?如果多个类去实现同一个接口,程序怎么知道他们是有关联的呢?)去反击。既然不是一个类去实现,那就是有很多地方有用到,大家需要统一标准。甚至有的编程语言(Object-C)已经不把接口叫 interface,直接叫 protocol。统一标准的目的,是大家都知道这个是做什么的,但是具体不用知道具体怎么做。

比如Compareable 这个接口用来比较两个对象,数字有数字的比较方法,字符串有字符串的比较方法,学生(自己定义的类)也有自己的比较方法。所以,Comparable 就来了。他告诉编译器,a b 两个对象都满足 Comparable 接口,也就是他们是可以进行比较的。具体怎么比较,这段程序不需要知道。

所以,他需要一些具体的实现,Comparable 接口有一个方法,叫 compareTo。那么这个方法就是用来取代 <、> 这样的运算符。因为运算符是编译器保留给内置类型(整数、浮点数)进行比较用的,而不是一个广义的比较运算。如果你可以明白 JDK 自身库里面诸如 Comparable 这样已经有的接口,那么就很容易理解自己在开发程序的时候为什么需要用到接口了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 语言 class