JAVA接口基础详解
接口概念:
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
接口可以理解为一种特殊的类,里面全部是由全局静态常量和公共的抽象方法所组成。接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准的。
接口的特点:
关键字 interface
接口中的所有成员变量都默认是由public static final修饰的。
接口中的所有方法都默认是由public abstract修饰的。
接口没有构造方法,不能被实例化。
实现接口的类中必须提供接口中所有方法的具体实现内容。
一个类可以实现不止一个接口,通过implements 关键字后边加接口名,不同接口名之间用","隔开,间接实现了多继承。
接口可以继承。一个接口可以继承于另外一个接口。
接口相当于是一个底层蓝图的抽象类,它指明了一个类必须要做什么
接口是一个100%的抽象类。接口里边的方法100%是抽象方法,但抽象类中可以有具体的方法。
接口的实现:
接口定义:
关键字:interface(接口)
public(访问修饰符) interface (关键字) 接口名 extends 父接口名,父接口名{
public static final 常量; //属性都是 默认 公有 静态 常量
public abstract 方法;// 方法都是 默认 公有 抽象 方法
}
//*****
public interface AnimalInterface{
public static final string name="naimal";
public void eat();
public void move();
}
接口在类中的实现:
关键字:implements(工具)
访问修饰符 class 类名 extends 父类名 implements 接口名1,接口名2{
//父类只能有一个,但接口可以多个
//****必须实现接口中的所有抽象方法,方法名、返回类型、参数个数类型、访问修饰符必须完全一致。
public void eat(){
}
public void move(){
}
}
//*****
public class tiger implements AnimalInterface{
public void eat(){
System.out.println("我吃肉");
}
public void move(){
System.out.println("我在地上跑");
}
}
接口的使用:
//接口
public interface AnimalInterface{
public static final string name="naimal";
public void eat();
public void move();
}
//实现接口的类
public class Tiger implements AnimalInterface{
public void eat(){
System.out.println("我吃肉");
}
public void move(){
System.out.println("我在地上跑");
}
}
//实现接口的类
public class Bird implements AnimalInterface{
public void eat(){
System.out.println("我吃昆虫");
}
public void move(){
System.out.println("我在天上飞跑");
}
}
//*****定义一个主类调用各种方法
public class animal{
public static void main(Sting [] args){
//建立类的对象
Tiger tiger=new Tiger();
tiger.eat();
tiger.move();
/**
//AnimalInterface tiger=new Tiger();
// tiger.eat();
//我们不能直接去实例化一个接口,因为接口中的方法都是抽象的,是没有方法体的,这样怎么可能产生具体的实例呢?但是,我们可以使用接口类型的引用指向一个实现了该接口的对象,并且可以调用这个接口中的方法。
*/
Bird bird=new bird();
bird.eat();
bird.move();
}
}
//****输出结果:
我吃肉
我在地上跑
我吃昆虫
我在天上飞
为什么要用接口:
“多重继承”:
有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。
精简程序结构,免除重复定义:
比如,有两个及上的的类拥有相同的方法,但是实现功能不一样,就可以定义一个接口,将这个方法提炼出来,在需要使用该方法的类中去实现,就免除了多个类定义系统方法的麻烦。