Java中的接口类.
begin 接口类的简单介绍.
如果一个抽象类中的所有方法都是抽象的,则可以把他定义为接口类。
接口类只能做两个事情:
在JDk8.0往后的版本中,接口类不止可以有抽象方法,还可以有静态方法和默认方法,即下面几种
- 抽象方法(abstrat).
- 静态方法(static).
- 默认方法(default).
- 静态常量.
- 不使用class关键词,而使用interface关键词.
甚至可以这么说,接口类不允许有普通方法、普通变量和静态变量.
接口类不使用class关键词来定义 ,而是使用interface关键词,下面来演示一下:
import java.util.Arrays;
interface Animal{
public static String type="Animal";
default String getType() {
return type;
}
public static void noThing() {
System.out.println("I'm nothing.");
}
void speak();//普通方法会被自动变成public abstract修饰
}
接口的静态方法可以直接用 **类名.方法名 **访问:
public class Kit {
public static void main(String[] arg) {
Animal.noThing();//I'm nothing.
}
2.接口类的实现
实现接口类不用extends关键词,而是用implements关键词,且一个类可以同时实现多个接口,接口名之间用逗号隔开。即需要注意下列几个问题
- 一个类可同时实现多个接口.
- 实现接口用implements关键词.
- 接口的抽象函数在子类中必须都得实现.
下面以Dog类实现接口类Animal为例:
package test;
interface Animal{
public static String type="Animal";
default String getType() {
return type;
}
public static void noThing() {
System.out.println("I'm nothing.");
}
void speak();
}
interface LandAnimal{
void run(String name);
}
class Dog implements Animal,LandAnimal{
public void speak() {
System.out.println("I'm dog.");
}
public void run(String name) {
System.out.println("Dog running.");
}
}
public class Kit {
public static void main(String[] arg) {
Dog dog=new Dog();
dog.speak();
dog.run("Dog");
/* I'm dog. Dog running. */
}
}
3.关于接口类的其他方面
- 一个接口类可同时继承多个接口类(其他普通类只能有一个直接父类).
- 一个普通类可以同时继承普通类和多个接口类
Example One:
package test;
interface Animal{
public static String type="Animal";
default String getType() {
return type;
}
public static void noThing() {
System.out.println("I'm nothing.");
}
void speak();
}
interface LandAnimal{
void run(String name);
}
interface EndAnimal extends Animal,LandAnimal{
static void output() {
System.out.println("This Methon of EndAnimal.");
}
}
public class Kit {
public static void main(String[] arg) {
EndAnimal.output();//This Methon of EndAnimal.
}
}
Example Two:
package test;
interface Animal{
public static String type="Animal";
default String getType() {
return type;
}
public static void noThing() {
System.out.println("I'm nothing.");
}
void speak();
}
interface LandAnimal{
void run(String name);
}
interface EndAnimal extends Animal,LandAnimal{
static void output() {
System.out.println("This Methon of EndAnimal.");
}
}
class Dog extends Object implements Animal,LandAnimal{
public void speak() {
System.out.println("I'm dog.");
}
public void run(String name) {
System.out.println("Dog running.");
}
}