Java 知识量:11 - 45 - 220
在Java编程语言中,接口(Interface)是一种定义方法签名但不包含方法实现的蓝图。它可以被类实现(implements)或扩展(extends)。接口是一种全由抽象方法构成的类型,它是一种纯粹的抽象,不包含任何具体的实现。
接口的主要目的是定义一个行为的集合,这个集合可以被任何类实现。一旦类实现了某个接口,它就必须提供接口中所有方法的实现。这样,接口提供了一种保证类遵循某种模板(即接口定义的行为)的方式。
接口还可以用于创建多态性,也就是说,可以用相同的方式处理不同的对象。如果几个类都实现了同一个接口,那么它们就可以被视为该接口类型的实例,即使它们可能属于不同的类。这使得我们可以编写能够处理接口类型的代码,而不必关心具体的类。
在Java 8之后,接口中也可以定义默认方法和静态方法。默认方法允许在接口中提供方法的默认实现,这样实现接口的类可以选择是否覆盖这个方法。静态方法则允许在接口中定义可以在任何地方直接调用的方法。
接口的定义语法如下:
public interface InterfaceName { // methods }
接口中的方法默认都是public和abstract的,不需要显式地在每个方法前面写这些关键词。
例如,定义一个接口,其中有一个方法计算面积:
public interface Shape { double computeArea(); }
然后,可以创建类(例如,Circle和Rectangle)来实现这个接口:
public class Circle implements Shape { private double radius; public Circle(double radius) { this.radius = radius; } @Override public double computeArea() { return Math.PI * Math.pow(radius, 2); } } public class Rectangle implements Shape { private double width; private double height; public Rectangle(double width, double height) { this.width = width; this.height = height; } @Override public double computeArea() { return width * height; } }
这样,Circle和Rectangle类都必须实现computeArea方法。这就是接口的主要用途:定义一个类应该具有哪些方法,而不关心这些方法的具体实现。
如果想扩展一个接口,可以在已有的接口中添加新的方法签名,这就是接口的扩展。例如:
interface MyInterface { void method1(); } // 扩展MyInterface接口 interface ExtendedInterface extends MyInterface { void method2(); }
在上述例子中,ExtendedInterface接口扩展了MyInterface接口,这意味着任何实现ExtendedInterface的类必须同时实现method1和method2。
Java 8以后,还可以在接口中添加默认方法和静态方法,例如:
interface MyInterface { void method1(); default void defaultMethod() { System.out.println("This is a default method"); } static void staticMethod() { System.out.println("This is a static method"); } }
在这个例子中,defaultMethod是一个默认方法,任何实现MyInterface的类可以选择是否覆盖这个方法。staticMethod是一个静态方法,可以在任何地方直接调用这个方法。
接口定义了一个契约或一组方法,实现接口的类必须实现这些方法。以下是如何在Java中实现接口的一个例子:
1、首先,定义一个接口。在这个例子中,定义一个名为 Animal 的接口,它有一个 makeSound 方法:
public interface Animal { void makeSound(); }
2、然后,创建一个实现该接口的类。在这个例子中,创建一个名为 Dog 的类:
public class Dog implements Animal { @Override public void makeSound() { System.out.println("Woof!"); } }
在这个例子中,Dog 类实现了 Animal 接口,因此它必须提供 makeSound 方法的实现。
3、在主程序中使用这个接口和类:
public class Main { public static void main(String[] args) { Animal myDog = new Dog(); myDog.makeSound(); // Outputs "Woof!" } }
在这个主程序中,创建了一个 Dog 对象,并将它赋值给一个 Animal 类型的变量。然后,调用 makeSound 方法,这将输出 "Woof!"。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6