Java中有一种常见的接口用法–;辨别一个物体有特定的用途或特征

Java中有一种常见的接口用法–;辨别一个物体有特定的用途或特征,java,Java,Java中有一种常见的接口用法——告诉对象有特定的用途或特性。让我们举一个真实的例子。你想在森林里生存。你可以找到不同的物品,然后把它们放在背包里供以后使用。当你休息的时候,你会仔细检查找到的东西,吃下那些可以吃的东西 首先,让我们定义一个名为FoundObject的接口,它没有任何方法。这些都是我们在树林里找到的东西: interface FoundObject { } 现在,我们定义了第二个接口,称为可食接口。我们将用它来表示这个物体是否可以食用 interface Edible

Java中有一种常见的接口用法——告诉对象有特定的用途或特性。让我们举一个真实的例子。你想在森林里生存。你可以找到不同的物品,然后把它们放在背包里供以后使用。当你休息的时候,你会仔细检查找到的东西,吃下那些可以吃的东西

首先,让我们定义一个名为FoundObject的接口,它没有任何方法。这些都是我们在树林里找到的东西:

  interface FoundObject { } 
现在,我们定义了第二个接口,称为可食接口。我们将用它来表示这个物体是否可以食用

  interface Edible { 
    public void eat(); 
  }
我们创建接口FoundObject的唯一目的是表示特定类型的对象,因此我们可以将它们放在同一个数组中。我们创建可食界面来标记哪些对象可以吃

现在,我们将定义我们在树林中发现的物体——水果和石头。当我们创建这两个对象(水果和石头)时,我们将实现FoundObject放在所有对象的类声明中,我们可以吃的对象也实现了可食接口。我们先写水果课,然后在接下来的问题中写石头课。水果类包含以下内容:

  • 名为name的私有实例变量,类型为String
  • 设置实例变量的构造函数方法
  • 返回水果名称的toString()方法
  • 一个被重写的eat()方法,该方法打印描述,如下所示。 例如:
测试

Fruit orange = new Fruit("Orange");
orange.eat();

Result:
     Yummy! you ate an Orange
FoundObject orange = new Fruit("Orange");
System.out.println(orange);

Result:
   Orange
这是我尝试的代码,请看一看

import java.awt.Point;
abstract class Shape implements Comparable<Shape> {
   protected Point p; // top-left corner

   public Shape() {
       p = new Point();
   }

   public Shape(int x, int y) {
       p = new Point(x, y);
   }

   public String toString() {
       return String.format("%d", perimeter());
   }

   public abstract int perimeter();

   public int compareTo(Shape other) {
       return this.perimeter() - other.perimeter();
   }
}

class Circle extends Shape {
   private int radius;

   public Circle() {
   }

   public Circle(int x, int y, int r) {
       super(x, y);
       radius = r;
   }

   public int perimeter() {
       return (int) (Math.PI * 2 * radius);
   }
}

class Rectangle extends Shape {
   private int width, height;

   public Rectangle() {
   }

   public Rectangle(int x, int y, int w, int h) {
       super(x, y);
       width = w;
       height = h;
   }

   public int perimeter() {
       return (width + height) * 2;
   }
}

这是因为类
Circle
的访问权限是
default
,但是构造函数和内部部分是
public
。将类级别更改为
public
。与您在无权访问的文件夹(可能是JDK文件夹?)中编译的
Rectangle

相同。移动到另一个文件夹。您得到的错误与整个界面无关。
Syntax Error(s)
__Tester__.java:26: error: error while writing Circle: Circle.class (Permission denied)
class Circle extends Shape {
^
1 error