广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州Java接口方法之默认方法声明_北大青鸟IT学校

作者:邓华发布时间:2021-04-04分类:Java技术浏览:951


导读:Java接口有方法声明、抽象方法声明、静态方法声明、默认方法声明这几种,之前我们学习了方法声明、抽象方法声明、静态方法声明,那么下面我们跟着惠州北大青鸟老师一起来学习Java接口方法中的抽象方法声明,希望大家能从中获益。

Java接口有方法声明、抽象方法声明、静态方法声明、默认方法声明这几种,之前我们学习了方法声明、抽象方法声明、静态方法声明,那么下面我们跟着惠州北大青鸟老师一起来学习Java接口方法中的抽象方法声明,希望大家能从中获益。

接口中的默认方法使用modifier default来声明。默认方法是在Java 8中添加新功能。

默认方法为实现接口的类提供了一个默认实现,但不重写默认方法。

假设,我们有以下接口。

interface Shape{
 void setX(double x);
 void setY(double y);
 double getX();
 double getY();
}

下面的代码显示了实现Shape接口的Circle。

class Circle implements Movable {  private double x;  private double y;  public Circle() {
 }  public Circle(double x, double y) {
   this.x = x;
   this.y = y;
 }  public void setX(double x) {
   this.x = x;
 }  public void setY(double y) {
   this.y = y;
 }  public double getX() {
   return x;
 }  public double getY() {
   return y;
 }  public String toString() {
   return "Circle(" + x + ", " + y + ")";
 }
}

如果我们向Shape添加一个新方法如下。

interface Shape {
 void setX(double x);

 void setY(double y);

 double getX();

 double getY();

 void move(double deltaX, double deltaY);
}

在Java 8之前,新方法move()是一个抽象方法。所有实现Shape接口的类都必须提供新方法的实现。

实现Shape接口的Pen类将不再编译,除非将新方法添加到这些类中。

在Java 8之前,在将接口分发给公共接口之后,不能在不中断现有代码的情况下向接口添加方法是不可能的。

Java接口默认方法是接受的接口解决方案。可以将默认方法添加到现有接口,并为该方法提供默认实现。

所有实现该接口的类都将继承默认实现,因此不会破坏它们。类可以选择重写默认实现。

默认方法使用关键字 default 声明。默认方法不能声明为abstract或static。它必须提供一个实现。否则,将发生编译时错误。

以下代码使用默认方法更改Shape接口。

interface Movable {
 void setX(double x);

 void setY(double y);

 double getX();

 double getY();

 // A default method  default void move(double deltaX, double deltaY) {
   double newX = getX() + deltaX;
   double newY = getY() + deltaY;
   setX(newX);
   setY(newY);
 }
}

以下项目列出了类中的具体方法和接口中的默认方法之间的相似点和差异。

两者都以相同的方式访问关键字 this 。 关键字 this 是调用该方法的对象的引用。

类中的一个具体方法可以访问类的实例变量。

默认方法不能访问实现接口的类的变量的实例。

默认方法可以访问接口的其他成员。

两种类型的方法都可以使用它们的参数。

两个方法都可以有一个throws子句。

接口中的嵌套类型声明定义了一个新的引用类型。

我们可以将一个类,接口,枚举和注释声明为嵌套类型。

在接口内声明的接口/类称为嵌套接口/类。

接口和类定义新的引用类型,因此做嵌套接口和嵌套类。

嵌套接口始终通过其封装接口访问。

我们还可以在接口中声明一个嵌套类。

具有嵌套类和常量字段的作业接口。

interface Task {  class EmptyTask implements Task {    private EmptyTask() {
   }    public void runJob() {
     System.out.println("Empty...");
   }
 }
 // A constant field
 Task EMPTY_JOB = new EmptyTask();
 void runJob();
}public class Main {  public static void main(String[] args) {
   submitJob(Task.EMPTY_JOB);
 }  public static void submitJob(Task job) {
   job.runJob();
 }
}

更多Java资讯关注网站动态,或者来惠州北大青鸟新方舟校区了解一下。

Java17.jpg

Java

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表