interface Com { int add(int a,int b); } abstract class A { abstract int add(int a,int b); } class B extends A implements Com{ public int add(int a,int b) { return a+b; } } public class E { public static void main(String args[]) { B b = new B(); Com com = b; System.out.println(com.add(12,6)); //【代码1】 A a = b; System.out.println(a.add(10,5)); //【代码2】 } }注释翻译上面的代码
时间: 2024-04-04 12:07:27 浏览: 39
这段代码定义了一个接口`Com`和一个抽象类`A`,并且一个具体类`B`继承了`A`并实现了`Com`接口。在`E`类的`main()`方法中,创建了一个`B`类的实例`b`,并将它赋值给了`Com`类型的变量`com`和`A`类型的变量`a`。在`【代码1】`和`【代码2】`处分别调用了`com.add(12,6)`和`a.add(10,5)`方法,并输出了它们的返回值。由于`B`类中实现了`add()`方法,因此这两个方法的返回值都是`18`。
相关问题
interface Com { int add(int a,int b); } abstract class A { abstract int add(int a,int b); } class B extends A implements Com{ public int add(int a,int b) { return a+b; } } public class E { public static void main(String args[]) { B b = new B(); Com com = b; System.out.println(com.add(12,6)); //【代码1】 A a = b; System.out.println(a.add(10,5)); //【代码2】 } }
这段代码中定义了一个接口 Com,一个抽象类 A,以及一个继承自 A 并实现了 Com 接口的类 B。其中,Com 接口中有一个 add 方法,A 抽象类中也有一个抽象的 add 方法,B 类中实现了 add 方法,并且可以同时作为 Com 接口和 A 抽象类的实现类。
在 main 方法中,首先创建了一个 B 类型的对象 b。然后将 b 转化为 Com 接口类型的对象 com,调用 com 的 add 方法,并将 12 和 6 作为参数传入,输出结果为 18。这是因为 B 类实现了 Com 接口,因此可以将 B 类型的对象转化为 Com 接口类型的对象,并调用 Com 接口中的方法。
接着将 b 转化为 A 抽象类类型的对象 a,调用 a 的 add 方法,并将 10 和 5 作为参数传入,输出结果为 15。这是因为 B 类继承自 A 抽象类,并实现了 A 抽象类中的 add 方法,因此可以将 B 类型的对象转化为 A 抽象类类型的对象,并调用 A 抽象类中的方法。
因此,代码1输出 18,代码2输出 15。
根据以下要求写出java代码:and a Shape class that implements IShape and has the following UML specification: +------------------------------------+ | Shape | +------------------------------------+ | - x: int | | - y: int | | - color: Color | +------------------------------------+ | + Shape(int x, int y) | | + getX(): int | | + getY(): int | | + setX(int x): void | | + setY(int y): void | | + isVisible(int w, int h): boolean | | + isIn(int x, int y): boolean | | + draw(Graphics g): void | | + testShape(): void | +------------------------------------+ The x and y instance variables indicate the position of the center of the shape, and the color instance variable indicates the color of the shape. The color of the shape is computed randomly in the constructor of the shape class and never changes after that, like this: color = new Color((float)Math.random(), (float)Math.random(), (float)Math.random()); The isVisible method is abstract, and indicates whether the shape is currently visible or not inside a window of width w and of height h. The isIn method is abstract, and indicates whether the point at coordinates (x, y) is currently inside the shape or not. The draw method simply changes the color of the graphics object g to be the correct color for the shape. Also add to your program a Start class to test your Shape class.
以下是Java代码实现:
```
import java.awt.Color;
import java.awt.Graphics;
interface IShape {
public boolean isVisible(int w, int h);
public boolean isIn(int x, int y);
}
class Shape implements IShape {
private int x;
private int y;
private Color color;
public Shape(int x, int y) {
this.x = x;
this.y = y;
this.color = new Color((float)Math.random(), (float)Math.random(), (float)Math.random());
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public boolean isVisible(int w, int h) {
// check if shape is within the window boundaries
if (x > 0 && x < w && y > 0 && y < h) {
return true;
}
return false;
}
public boolean isIn(int x, int y) {
// check if point is within the shape boundaries
return false;
}
public void draw(Graphics g) {
g.setColor(color);
}
public void testShape() {
// implement test cases for Shape class
}
}
public class Start {
public static void main(String[] args) {
// test Shape class here
}
}
```
阅读全文