1.接口
接口 (interface) 是Java中一种特殊的引用类型,它定义了一组方法的规范,但没有提供方法的具体实现。
实现该接口的类,需要实现接口中定义的所有方法。
Java 接口中的方法默认情况下是没有方法体的。在 Java 8 之前,接口只能包含抽象方法,这些方法没有方法体,只有方法签名。
然而,从 Java 8 开始,你可以在接口中添加默认方法和静态方法。默认方法允许你在接口中定义具有默认实现的方法,而静态方法则允许你在接口中定义静态方法。默认方法和静态方法都可以有方法体,但是它们不能有访问修饰符。 在 Java 8 及以后的版本中,接口中的普通方法仍然不能有方法体
实现接口的类必须提供方法的具体实现,并满足接口定义的方法签名。
一个类可以实现多个接口,从而获得多个接口定义的方法。
接口中所有的方法都是public的,所以创建方法时可不用写访问修饰符。接口中的字段总是public static final。
例如:
访问修饰符 interface 接口名{ //创建方法 返回值类型 方法名(参数列表) }
public interface Comparable { //创建一个接口 //创建一个方法: 接口中所有的方法都是public的,所以创建方法时可不用写访问修饰符 int compareTo(Object other); }
Java 接口中的方法默认情况下是没有方法体的。在 Java 8 之前,接口只能包含抽象方法,这些方法没有方法体,只有方法签名。
然而,从 Java 8 开始,你可以在接口中添加默认方法和静态方法。默认方法允许你在接口中定义具有默认实现的方法,而静态方法则允许你在接口中定义静态方法。默认方法和静态方法都可以有方法体,但是它们不能有访问修饰符。
下面是一
2.接口的实现
要让类实现一个接口,需要使用关键字 implements
类实现接口时,类要实现接口中的所有方法。
例如:
public interface Comparable { //创建一个方法 int compareTo(Object other); }
类中实现接口:
public class Employee implements Comparable { @Override public int compareTo(Object other) { return 0; } }
在接口声明中,定义compareTo( )方法没有声明为public,这是因为接口中的所有方法都是public的。
不过实现接口时,必须帮方法声明为public。否则,编译器会认为这个方法的访问权限是包可见性。
3.接口的特点
接口 ( interface) 不是类,不能用new运算符来实例化一个接口。虽然不能实例化接口,但能声明接口的变量。
接口变量必须引用实现了这个接口的类对象。
例如:
//声明接口的变量 Comparable c; //接口变量必须引用实现了这个接口的类对象 c=new Employee();
接口不能包含实例字段,但可以包含常量。
例如:
public interface Moveable{ double d = 13.14; //这个字段会被自动设置为public static final }
与接口中的方法都自动被设置为public一样,接口中的字段总是public static final。
例如:
interface Constants { //这两个字段会被自动设置为public static final int MAX_VALUE = 100; String DEFAULT_NAME = "John Doe"; }
4.接口的继承
接口之间可继承,也叫接口的拓展。
例如:
public interface Moveable{ } public interface Powered extends Moveable{ }
5.接口中方法:
5.1 接口的默认方法
Java 8引入了默认方法的概念,允许在接口中定义具有默认实现的方法。默认方法使用default关键字进行修饰,提供了方法的具体实现。
当有多个同名方法时,默认方法先被选用,被默认选择。
默认方法可以在接口中直接使用,也可以在实现类中选择性地重写。
例如:
public interface Comparable<T>{ default int compareTo(T other){ //默认方法可以有方法体 return 0; } }
5.2 接口的静态方法
Java 8引入了接口中的静态方法,用于在接口中定义具有方法体的静态方法。
静态方法使用static关键字进行修饰,可以通过接口名直接调用,无需实例化对象。
例如:
static void staticMethod() { //静态方法通过接口名.方法名调用 System.out.println("这是一个静态方法"); //抽象方法通过实例化对象来再调用方法 }
5.3 接口的私有方法
Java 9引入了接口中的私有方法,用于在接口内部封装和复用代码。
私有方法使用private关键字进行修饰,只能在接口内部调用,不能被接口的实现类或其他类直接访问。
例如:
private void privateMethod() { System.out.println("这是接口中的私有方法"); }
5.4 与接口有关的其他方法
int comparaTo (T other)
用这个对象与other进行比较。如果这个对象小于other则返回一个负整数。如果氙灯则返回0;否则返回一个正整数。
这个方法的包:java.lang.Comparable
static void sort (Object [ ] a)
对数组a中的元素进行排序。要求数组中元素必须实现了Compareble接口。并且元素之前是可以进行比较的。
这个方法的包:java.util.Arrays
static int compare (int x,int y)
两个整数进行比较。如果 x < y 返回一个负整数;如果x和y相等,则返回0;否则返回一个正整数。
这个方法的包:java.lang.Integer
static int compare (double x , double y)
两个浮点数进行比较。如果 x < y 返回一个负整数;如果x和y相等,则返回0;否则返回一个正整数。
这个方法的包:java.lang.Double