接口是抽象类的变体。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。
接口的好处是,它给出了屈从于Java技术单继承规则的假象。当类定义只能扩展出单个类时,它能实现所需的多个接口。
接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即,将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。
接口是用关键字interface来定义的,如下所述:
public interface Transparency {
public static final int OPAQUE=1;
public static final int BITMASK=2;
public static final int TRANSLUCENT=3;
public int getTransparency();
} 类能实现许多接口。由类实现的接口出现在类声明的末尾以逗号分隔的列表中,如下所示: public class MyApplet extends Applet implements
Runnable, MouseListener{
"..."
} 下例表示一个简单的接口和实现它的一个类:
interface SayHello {
void printMessage();
} class SayHelloImpl implements SayHello {
void printMessage() {
System.out.println("Hello");
}
} interface SayHello强制规定,实现它的所有的类必须有一个称做printMessage的方法,该方法带有一个void返回类型且没有输入参数。
对于下述情况,接口是有用的:
声明方法,期望一个或更多的类来实现该方法。
揭示一个对象的编程接口,而不揭示类的实际程序体。(当将类的一个包输送到其它开发程序中时它是非常有用的。)
捕获无关类之间的相似性,而不强迫类关系。
描述“似函数”对象,它可以作为参数被传递到在其它对象上调用的方法中。它们是“函数指针”(用在C和C++中)用法的一个安全的替代用法。
接口的好处是,它给出了屈从于Java技术单继承规则的假象。当类定义只能扩展出单个类时,它能实现所需的多个接口。
接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即,将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。
接口是用关键字interface来定义的,如下所述:
public interface Transparency {
public static final int OPAQUE=1;
public static final int BITMASK=2;
public static final int TRANSLUCENT=3;
public int getTransparency();
} 类能实现许多接口。由类实现的接口出现在类声明的末尾以逗号分隔的列表中,如下所示: public class MyApplet extends Applet implements
Runnable, MouseListener{
"..."
} 下例表示一个简单的接口和实现它的一个类:
interface SayHello {
void printMessage();
} class SayHelloImpl implements SayHello {
void printMessage() {
System.out.println("Hello");
}
} interface SayHello强制规定,实现它的所有的类必须有一个称做printMessage的方法,该方法带有一个void返回类型且没有输入参数。
对于下述情况,接口是有用的:
声明方法,期望一个或更多的类来实现该方法。
揭示一个对象的编程接口,而不揭示类的实际程序体。(当将类的一个包输送到其它开发程序中时它是非常有用的。)
捕获无关类之间的相似性,而不强迫类关系。
描述“似函数”对象,它可以作为参数被传递到在其它对象上调用的方法中。它们是“函数指针”(用在C和C++中)用法的一个安全的替代用法。
而抽象类可以有属性,而且可以有抽象方法,也可以有实现的方法。但两者都不能
被实化。 使用的时候,一个类可以继承多个接口,但只能继承一个抽象类。
例如
这就是一个接口例子import java.awt.*;
import java.awt.event.*;abstract class mankind
{
final String name="xuguo";
int sex;
int age;
abstract void profession(String position);
}
class student extends mankind
{
void profession(String position)
{
System.out.println(super.name);
System.out.println("I am a student."+position);
}
}
class teacher extends mankind
{
void profession(String position)
{
System.out.println(super.name);
System.out.println("Iam a teacher."+position);
}
} interface animal
{
int handnumber=2;
void model();
}
class mankind2 implements animal
{
public void model()
{
System.out.println("Generally,one person has two hands.");
System.out.println("one head,two eyes,two ears,like monkey.");
System.out.println(animal.handnumber);
}
}class Overloadexample extends Frame {
public Overloadexample() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
}
public static void main(String args[]) {
try
{
System.out.println("Starting Overloadexample...");
Overloadexample mainFrame = new Overloadexample();
mainFrame.setSize(400, 400);
mainFrame.setTitle("Overloadexample");
mainFrame.setVisible(true);
student stu1=new student();
teacher tch1=new teacher();
stu1.profession("monitor");
tch1.profession("headmaster");
mankind2 person=new mankind2();
person.model();
}
catch(Exception e)
{
System.out.println(e);
}
}
}
去看看圣经《THINK IN JAVA 》是怎么说得。