接口定义了一系列的抽象方法和常量,形成一个属性集合。

接口定义完成后任何类都可以实现接口,而且一个类可以实现多个接口。

实现接口的类必须实现接口中定义的抽象方法,具体实现细节由类自己定义。可以说接口定义了类的框架,它实际上是一种完全的抽象类。

接口的定义格式:

修饰符 interface 接口名 {
// 声明变量
类型 变量名; // 声明方法
返回值类型 方法名(参数);
}

接口定义注意一下几点:

  1. 接口的修饰符只能为默认的(无修饰符)或者public。当修饰符为默认时,接口是包可见的,在几口所在的包之外的类不能使用接口。修饰符为public时,任何类都可以使用该接口。
  2. 接口的名字应该符合Java的标识符规定。
  3. 接口内可以声明变量,接口内的变量被自动设置为共有的(public)、静态的(static)、最终的(final)。
  4. 接口定义的方法都是抽象,他们被自动地设置为public。
  5. 接口也被保存为.java文件,文件名和类名相同。
public interface Animal {
void breath();
} public class Tiger implements Animal {
public void breath() {
System.out.println("老虎用肺呼吸");
}
} public class Test {
public static void main(String[] args) {
Tiger tiger = new Tiger();
tiger.breath();
}
}

接口之间也可以有继承关系。继承接口的接口拥有它的父接口的方法,它还可以定义自己的方法,实现这个子接口的类,要实现所有这些方法。

public interface Animal {
void breath();
} public interface Mammal extends Animal {
void run();
} public class Tiger implements Mammal {
  // 类要实现接口的所有方法
public void breath() {
System.out.println("老虎用肺呼吸");
} public void run() {
System.out.println("老虎用四条腿跑");
}
} public class Test {
public static void main(String[] args) {
Tiger tiger = new Tiger(); tiger.breath();
tiger.run();
}
}

跟抽象类一样,接口也不可以实例化,但是可以声明接口类型的变量,它的值必须是实现了该接口的类的对象。

// 只能调用在 Animal 接口中定义的方法
Animal tiger= new Tiger();
// 通过强制转换,就可以调用
((Tiger) tiger).run();
((Mammal)tiger).run(); // 在 Animal 和 Mammal 中定义的方法都可以调用
Mammal tiger = new Tiger();

接口的另一个重要应用是用它来创建常量组。

类可以直接使用接口中定义的常量。把一些固定的常量组值放在接口中定义,然后在类中实现该接口,

public interface Day {
int MORNING = 1;
int ARTERNOON = 2;
int NIGHT = 3;
} public class Test implements Day {
public static void main(String[] args) {
System.out.println(MORNING + "," + ARTERNOON + "," + NIGHT);
}
}

抽象类和接口的比较:

  1. 一个类可以实现多个接口,但是只能继承一个抽象类。
  2. 抽象类可以有抽象的方法,也可以有已经实现的方法,继承它的子类可以对方法进行重写,而接口中定义的方法必须全部为抽象方法。
  3. 在抽象类中定义的方法,它们的修饰符可以是publib、protected、private,也可以是默认值,但是在接口中定义的方法全是public。
  4. 抽象类可以有构造函数,接口不能。两者都不能实例化,但是都能通过他们来存放子类对象或实现类的对象,也可以说它们都可以实现多态。

Java 接口 interface implements的更多相关文章

  1. Java接口interface

    Java接口interface 1.多个无关的类可以实现同一个接口. 2.一个类可以实现多个无关的接口. 3.与继承关系类似,接口与实现类之间存在多态性. 接口(interface)是抽象方法和常量值 ...

  2. Java——接口interface

    3.5接口interface ①有时必须从几个类中派生出一个子类,继承它们所有的属性和方法.但是,Java不支持多重继承.有了接口,就可以得到多重继承的效果. ②接口(interface)是抽象方法和 ...

  3. 浅谈Java接口(Interface)

    浅谈Java接口 先不谈接口,不妨设想一个问题? 如果你写了个Animal类,有许多类继承了他,包括Hippo(河马), Dog, Wolf, Cat, Tiger这几个类.你把这几个类拿给别人用,但 ...

  4. 详解java接口interface

    引言 接口这个词在生活中我们并不陌生. 在中国大陆,我们可以将自己的家用电器的插头插到符合它插口的插座上: 我们在戴尔,惠普,联想,苹果等品牌电脑之间传输数据时,可以使用U盘进行传输. 插座的普适性是 ...

  5. Java接口interface,匿名内部类

    接口 1.接口内部为 常量+公用的抽象方法.类必须实现接口中的所有方法 2.接口的语法格式:不写abstract会自动添加,可以继承多个接口 修饰符不能使private,protected [修饰符] ...

  6. java接口(interface)

    引入:抽象类是从多个类中抽象出来的模板,若要将这种抽象进行得更彻底,就得用到一种特殊的“抽象类”→ 接口; 例子: 生活中听说过的USB接口其实并不是我们所看到的那些插槽,而是那些插槽所遵循的一种规范 ...

  7. Java 接口和抽象类差别

    原文:http://blog.csdn.net/sunboard/article/details/3831823 1.概述 一个软件设计的好坏,我想非常大程度上取决于它的总体架构,而这个总体架构事实上 ...

  8. Java 接口和抽象类区别(写的很好,转了)

    原文:http://blog.csdn.net/sunboard/article/details/3831823 1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是 ...

  9. Java 接口和抽象类--缺省模式

    一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体 ...

随机推荐

  1. java并发编程:线程安全管理类--原子操作类--AtomicLongArray

    1.类 AtomicLongArray public class AtomicLongArray extends Object implements Serializable 可以用原子方式更新其元素 ...

  2. SPOJ AMR10I 递归

    DES :给你n 块石头.不会超过70.把它们分成n堆.每堆里的石头数做积.问共有多少个数.最终的结果除了1之外都能分解成素数相乘或者素数相乘再乘1.所以可以找到所有不超过70的素数然后进行深搜. 感 ...

  3. ADO.NET Entity Framework -Code Fisrt 开篇(一)

    ADO.NET Entity Framework -Code Fisrt 开篇(一) 2012-12-25 15:13 by 易code, 911 阅读, 0 评论, 收藏, 编辑 ADO.NET E ...

  4. listview的两种适配器

    一. ArrayAdapter ListView listView = (ListView) findViewById(R.id.list_view);//ListView的参数为id listVie ...

  5. 关于const的一些注意事项

    1.const对象必须初始化,一旦创建其值就无法更改 2.默认情况下,const对象仅在文件内有效,若想在多个文件中使用同一个const对象,就是不在每个文件独立的定义一个const对象,可以进行如下 ...

  6. Apache 子项目 概述

    apache HTTP Server--------Web服务器(多用于静态网页,有负载均衡效果,可承受每天数百万人访问).apache Abdera>>>>>>& ...

  7. L219 China's office workers consider further education, training essential

    More than 90 percent of China's office workers consider on-the-job training and continuing education ...

  8. \n,\r,\t

    etF首先说说\n,\r,\t \n 软回车: 在Windows 中表示换行且回到下一行的最开始位置 在Linux.unix 中只表示换行,但不会回到下一行的开始位置. \r 软空格: 在Linux. ...

  9. 一张图让你学会Python

    有编程基础的人一看就可以了解 Python 的用法了.真正的 30 分钟上手.国外一高手画的,现把它翻译成中文,入门超简单python入门神图 *单击放大

  10. matlab max()

    max()函数 (1)可以找出矩阵元素中每列的最大值 max(A) ,max(A,[],dim ),带返回值的[C,I]=max(A).[C,I]=max(A,[],dim) max(A,[],dim ...