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