接口,JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法,接口则包含类要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。Java 中,接口类型可用来声明一个变量,可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
定义接口:
接口使用interface关键字来定义,在接口中,所有的方法都是抽象的(即没有方法体),且默认是public的。接口中的变量默认是public、static和final的,即它们是全局常量。
public interface Animal {
void eat();
void sleep();
// 默认情况下,这里的变量是public static final的
int NUMBER_OF_LEGS = 4;
}
实现接口:
类通过implements
关键字来实现接口,一个类实现了一个接口时,它必须提供接口中所有方法的具体实现,除非该类被定义为抽象类。
public class Dog implements Animal {
@Override
public void eat() {
System.out.println("Dog is eating");
}
@Override
public void sleep() {
System.out.println("Dog is sleeping");
}
}
接口的多重继承:
Java不支持类的多重继承,可以通过实现多个接口来达到类似的效果。一个类可以实现多个接口,从而继承多个接口中的方法。
public interface Swimmer {
void swim();
}
public class Dolphin implements Animal, Swimmer {
// 必须实现Animal和Swimmer接口中的所有方法
}
默认方法和静态方法:
Java 8开始,接口中可以包含有具体实现的方法,即默认方法(使用default
关键字)和静态方法(使用static
关键字)。
public interface NewAnimal {
// 默认方法
default void breathe() {
System.out.println("Animal is breathing");
}
// 静态方法
static void info() {
System.out.println("This is an animal interface");
}
}
私有方法和私有静态方法:
Java 9开始,接口中可以包含私有方法和私有静态方法,这有助于在接口内部复用代码,同时保持接口的简洁性。
// 私有静态方法
private static void privateStaticMethod() {
System.out.println("This is a private static method");
}
// 私有方法
private void privateMethod() {
System.out.println("This is a private method");
}
// 默认方法调用私有方法
default void usePrivateMethod() {
privateMethod();
}
}
接口与抽象类的区别:
接口方法默认是public和abstract的,而抽象类中的方法可以是public、protected或default(包访问权限)的,并且它们可以有具体实现(即非抽象方法)。
一个类只能继承一个抽象类(单继承),但可以实现多个接口(多重继承)。
接口主要用于定义对象的行为,抽象类既可以定义行为,也可以定义对象的属性。
标签:Java,实现,void,接口,学习,抽象类,方法,public From: https://blog.csdn.net/xuann/article/details/144097001