标签:java类 方法 返回 logs file 并且 tree 创建 产生
以下内容引用自http://wiki.jikexueyuan.com/project/java/interfaces.html:
接口是抽象方法的集合。如果一个类实现了一个接口,那么就需要继承这个接口中的所有抽象方法。
接口不是类。写一个接口和写一个类很相似,但是它们是两个不同的概念。类是描述一个对象的成员属性和行为。接口只包含一个类所实现的行为。
除非实现了接口的类是抽象的,否则接口中的所有方法都需要在类中实现。
在以下方面,接口和类非常相似:
.java
的扩展名写入文件中,并且接口的名字与文件名相同。.class
文件中。然而,在以下方面,接口和类是不同的:
一、声明接口
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\ }
接口有下述属性:
abstract
关键字。abstract
关键字也不需要。示例:
/* File name : Animal.java */ interface Animal { public void eat(); public void travel(); }
二、接口的实现
当一个类实现一个接口的时候,可以认为类就是签订一个条约,同意去执行接口中的各种行为。如果一个类没有实现接口中的所有行为,这个类就必须声明为abstract 。
类使用implements
关键字来实现一个接口。这个implements
关键字写在类的声明部分中extends(如果有)部分的后面。
/* 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
当覆写定义在接口中的方法时,如下是需要遵守的几条规则:
当实现接口时有如下几条规则:
三、接口的继承
一个接口可以继承另一个接口,和一个类继承自另一个类的方法相同。 extends
关键字用来继承一个接口,并且子接口要继承父接口的所有方法。
下述的Sports接口被Hockey和Football接口继承。
//Filename: Sports.java public interface Sports { public void setHomeTeam(String name); public void setVisitingTeam(String name); } //Filename: Football.java public interface Football extends Sports { public void homeTeamScored(int points); public void visitingTeamScored(int points); public void endOfQuarter(int quarter); } //Filename: Hockey.java public interface Hockey extends Sports { public void homeGoalScored(); public void visitingGoalScored(); public void endOfPeriod(int period); public void overtimePeriod(int ot); }
Hockey接口有四个方法,但是它从Sports接口中继承了两个;因此,一个实现了Hockey接口的类需要实现全部的六个方法。类似的,实现了Football的类需要定义Football接口中三个方法和Sports接口中的两个方法。
四、多个接口的继承
一个Java类只可以继承一个父类,不可以多继承。 然而,接口不是类,一个接口可以继承多个父接口。
一旦使用了extends
关键字,所有父接口声明时需要以逗号分隔。
例如,如果Hockey接口同时继承了Sports和Event接口,它需要像如下方式声明:
public interface Hockey extends Sports, Event
五、标识接口
继承接口的最普通用法是父接口不包含任何的方法。例如, 在java.awt.event包中的MouseListener接口继承了java.util.EventListener接口,像如下定义:
package java.util; public interface EventListener {}
一个内部没有任何方法的接口被称为tagging interface。 tagging interface有两个基本的用途:
创建一个共同的父类: 像EventListener接口, 它继承了很多Java API中的其它接口,可以使用tagging interface在一组接口中创建一个共同的父类。例如,当一个接口继承了EventListener接口的时候, Java虚拟机(JVM)就知道这个特殊的接口被用在事件代理上。
向类添加数据类型: 一个实现了tagging interface的类是不需要定义任何方法的(因为这个接口中本来就没有任何方法),但是这个类通过多态的特性变成了一个接口类型。
测试工程:https://github.com/easonjim/5_java_example/tree/master/javabasicstest/test22
标签:java类 方法 返回 logs file 并且 tree 创建 产生
原文地址:http://www.cnblogs.com/EasonJim/p/6936070.html