Java接口实现类是指实现了某个接口的类,它是一种特殊的子类,它必须实现接口中声明的所有方法。在Java中,一个类可以实现多个接口,但是不能同时从多个基类中继承。
Java接口实现类的作用是使用者不必关心具体的实现,而只需要关注提供的功能。这样就使得代码的复用性大大增强,也使得代码的修改和扩展性大大增强。
Java 提供了一个特别有用的语法来创建一个新的对象并将其赋值到一个引用上:“new”运行时表达式。当我们使用“new”运行时表达式来创建一个新对象时,我们必须显式地将该对象赋值到一个引用上。
// 创建一个MyInterfaceImpl对象并将其赋值到myInterfaceImpl引用上 MyInterfaceImpl myInterfaceImpl = new MyInterfaceImpl(); // 访问myInterfaceImpl对象中的方法 myInterfaceImpl.method1(); myInterfaceImpl.method2();
接口指定对象必须提供的协议。
类可以提供接口的抽象方法的部分实现,并且在这种情况下,类必须将自身声明为抽象。
实现接口的类使用“implements”子句来指定接口的名称。
“实现”子句由关键字implements,后跟逗号分隔的接口类型列表组成。
一个类可以实现多个接口。
实现接口的类声明的一般语法如下:
<modifiers> class <class-Name> implements <comma-separated-list-of-interfaces> { // Class body goes here }
假设有一个Circle类。
public class Circle implements Shape { void draw(){ System.out.println("draw circle"); } }
实现接口的类必须重写以实现接口中声明的所有抽象方法。否则,类必须声明为abstract。
接口的默认方法也由实现类继承。
植入类可以选择不需要重写默认方法。
接口中的静态方法不会被实现类继承。
下面的代码定义了两种引用类型,一种来自Circle类,另一种来自接口类型。
Circle c = new Circle(); Shape shape = new Circle();
变量c是Circle类型。它指的是Circle对象。
第二个赋值也是有效的,因为Circle类实现了Shape接口,而Circle类的每个对象也都是Shape类型。
当一个类完全实现了一个接口时,它为所实现的接口的所有抽象方法提供一个实现。
接口中的方法声明包括方法的约束。例如,方法声明中的throws子句是方法的约束。
import java.io.IOException; interface Shape { void draw(double amount) throws IOException; } class Main implements Shape{ @Override public void draw(double amount) { // TODO Auto-generated method stub } }
Main的代码是有效的,即使它丢弃了throws子句。当类覆盖接口方法时,允许删除约束异常。
如果我们使用Shape类型,我们必须处理IOException。
import java.io.IOException; interface Shape { void draw(double amount) throws IOException; } class Main implements Shape{ @Override public void draw(double amount) { // TODO Auto-generated method stub } public void anotherMethod(){ Shape s = new Main(); try { s.draw(0); } catch (IOException e) { e.printStackTrace(); } draw(0); } }
一个类可以实现多个接口。类实现的所有接口都在类声明中的关键字implements之后列出。
通过实现多个接口,类同意为所有接口中的所有抽象方法提供实现。
interface Adder { int add(int n1, int n2); } interface Subtractor { int subtract(int n1, int n2); } class Main implements Adder, Subtractor { public int add(int n1, int n2) { return n1 + n2; } public int subtract(int n1, int n2) { return n1 - n2; } }
类不必为所有方法提供实现。
如果一个类不提供接口的完全实现,它必须声明为abstract。
interface Calculator { int add(int n1, int n2); int subtract(int n1, int n2); } abstract class Main implements Calculator{ public int add(int n1, int n2) { return n1 + n2; } }
Java面向对象设计 -Java异常抛出如果一段代码可能抛出一个已检查的异常,我们有两个选择:使用try-catch块处理已检查的异常。在方...
Java数据类型教程 -Java数据类型包装器Java库在java.lang包中提供了八个类来表示八种基本类型中的每一种。这些类称为包装类,因...
Java数据类型教程 -Java字符串创建/长度创建字符串对象String类包含许多可用于创建String对象的构造函数。默认构造函数创建一个...
Java数据类型教程 -Java StringBuilder/StringBufferStringBuilder和StringBuffer是String类的伴随类。它们表示一个可变的字符序...
Java 实例 - 打印目录结构 Java 实例以下实例演示了使用 File 类的 file.getName() 和 file.listFiles() 方法来打印目录结构:im...