- Java类
- Java包
- Java方法
- Java访问
- Java创建
- Java对象(Object)
- Java内部类
- Java继承
- Java抽象类
- Java泛型类
- Java异常
- Java接口
- Java枚举
- Java注解
Java接口实现
实现接口
接口指定对象必须提供的协议。类可以提供接口的抽象方法的部分实现,并且在这种情况下,类必须将自身声明为抽象。
实现接口的类使用“implements
”子句来指定接口的名称。“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接口继承
- Java教程
- Vim教程
- Swing教程
- Spring教程
- Spring Web Services教程
- Spring MVC教程
- Spring JDBC教程
- Spring Cloud教程
- Spring Boot教程
- Spring Boot CLI教程
- Spring Batch教程
- Spring AOP教程
- PDFBox教程
- JSP教程
- JSF教程
- JPA教程
- Java面向对象设计
- Java设计模式
- Java虚拟机教程
- Java泛型教程
- Java正则表达式教程
- Java数据类型教程
- Java并发编程教程
- Java密码学教程
- Java多线程教程
- Java国际化(i18n)教程
- JavaFX教程
- Java9教程
扫描二维码
程序员编程王