Java 接口
在Java中实现抽象的另一种方法是使用接口。一个接口是一个完全“抽象类”,用于将具有空主体的相关方法分组:
// interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void run(); // interface method (does not have a body)
}
要访问接口方法,该接口必须由另一个类使用 implements 关键字(而不是extends)“实现”(有点像继承的)。接口方法的主体由“implement”的类提供:
// 接口
interface Animal {
public void animalSound(); // 接口方法 (没有方法体)
public void sleep(); // // 接口方法 (没有方法体)
}
// Pig "实现" the Animal 接口
class Pig implements Animal {
public void animalSound() {
// The body of animalSound() is provided here
System.out.println("The pig says: wee wee");
}
public void sleep() {
// The body of sleep() is provided here
System.out.println("Zzz");
}
}
class MyMainClass {
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound();
myPig.sleep();
}
}
尝试一下
接口注意事项:
- 与抽象类一样,接口不能用于创建对象(在上面的示例中,无法在MyMainClass中创建“Animal”对象)
- 接口方法没有主体- 主体由“实现”类提供
- 在实现接口时,必须重写其所有方法
- 接口中的方法在默认情况下abstract 和 public
- 接口属性默认情况下public, static和final
- 接口不能包含构造函数(因为它不能用于创建对象)
为什么以及何时使用接口?
- 为了获得安全性- 隐藏某些细节,仅显示对象(接口)的重要细节。
- Java不支持“多重继承”(一个类只能从一个超类继承)。但是,可以使用接口来实现,因为该类可以实现多个接口。
注意:要实现多个接口,请用逗号分隔它们(请参见下面的示例)。
要实现多个接口,请用逗号分隔它们:
interface FirstInterface {
public void myMethod(); // interface method
}
interface SecondInterface {
public void myOtherMethod(); // interface method
}
class DemoClass implements FirstInterface, SecondInterface {
public void myMethod() {
System.out.println("Some text..");
}
public void myOtherMethod() {
System.out.println("Some other text...");
}
}
class MyMainClass {
public static void main(String[] args) {
DemoClass myObj = new DemoClass();
myObj.myMethod();
myObj.myOtherMethod();
}
}
尝试一下