Java千百问_05面向对象(004)_java接口到底是什么-阿里云开发者社区

开发者社区> 开发与运维> 正文

Java千百问_05面向对象(004)_java接口到底是什么

简介:


1、什么是接口

接口(interface)不是一个类,它是抽象方法的集合。一个类实现一个接口,从而继承和实现接口的抽象方法。 
抽象方法看这里:java中抽象概念如何体现的

接口的特点如下,先看与类类似的特点:

  1. 接口的写法和写一个类类似,但它们是两个不同的概念。类描述对象的属性和行为。接口仅仅定义了事物的行为,且不会具体化这个行为。
  2. 除非实现接口的是抽象类,不然接口中的所有方法必须在类(实现这个接口的类)中定义且实现
  3. 接口同类一样,可以包含任何数量的方法。
  4. 接口同类一样,被写在同一个.java扩展名的源文件中,文件名与接口名称一致。
  5. 接口同类一样,会被编译为一个.class文件。
  6. 同类一样,需要指定包(package),来表明接口所在的目录结构。了解更多package看这里:package和import作用是什么

与类不同的几个方面:

  1. 接口不能被实例化
  2. 接口不包含任何构造函数。
  3. 接口中的所有方法都是抽象的。
  4. 接口不包含实例字段。但可以定义常量,使用static和final关键字。 
    了解常量看这里:局部变量、类变量、实例变量有什么区别
  5. 类通过实现接口重写接口的方法,而不是继承。
  6. 接口可以继承另一个接口。

2、如何编写一个接口

使用interface关键字声明一个接口。 
例子:

/* File name : NameOfInterface.java */
import java.lang.*;
//Any number of import statements

public interface NameOfInterface
{
   //Any number of final, static fields
   //Any number of abstract method declarations
}

编写接口需要注意:

  1. 接口是隐式抽象的。声明一个接口,不需要使用abstract关键字
  2. 接口中的每个方法也隐式抽象的。方法也不需要abstract关键字
  3. 接口中的方法是隐式公开的,即public

例子:

/* File name : Animal.java */
interface Animal {

   public void eat();
   public void travel();
}



3、如何实现一个接口

当一个类实现一个接口,可以认为该类同意接受接口定义的行为。如果一个类不实现该接口的所有行为,该类必须自己声明为abstract。 
类使用implements关键字来实现一个接口。如下:

/* File name : MammalInt.java */
public class MammalInt implements Animal{

   public void eat(){
      System.out.println("Mammal eats");
   }

   public void travel(){
      System.out.println("Mammal travels");
   }

   public int noOfLegs(){
      return 0;
   }

   public static void main(String args[]){
      MammalInt m = new MammalInt();
      m.eat();
      m.travel();
   }
}

这将产生以下结果: 
Mammal eats 
Mammal travels

重写接口中的方法有几个规则:

  1. 接口方法抛出的异常在被实现时也需要抛出。
  2. 重写方法时,应保持接口方法的参数和返回类型一致
  3. 一个实现类本身可以是抽象的,如果抽象类,接口方法可以不实现。
  4. 一个类只能扩展一个类,但能实现多个接口
  5. 一个接口可以扩展另一个接口,类似于一个类可以扩展另一个类。
原文地址:http://blog.csdn.net/ooppookid/article/details/51172263




版权声明:本文首发在云栖社区,遵循云栖社区版权声明:本文内容由互联网用户自发贡献,版权归用户作者所有,云栖社区不为本文内容承担相关法律责任。云栖社区已升级为阿里云开发者社区。如果您发现本文中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,阿里云开发者社区将协助删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章