Tia*_*Tia 1 java interface abstract
下面的程序计算实例化的任意数量形状的区域总数.问题是我不知道如何输出接口的draw()方法.
这是主要类:
public class MyClass1{
public static void main(String[] args) {
Shape[] shapes= new Shape[3];
shapes[0]= new Circle(20.0);
shapes[1]= new Rectangle(25, 63);
shapes[2]= new Circle(25);
double total=0;
for(int i=0; i<shapes.length; i++){
total+= shapes[i].area();
}
System.out.printf("Total: %.1f", total);
}
}
Run Code Online (Sandbox Code Playgroud)
超类形状
abstract class Shape {
abstract double area();
}
Run Code Online (Sandbox Code Playgroud)
Drawable接口
public interface Drawable {
public abstract void draw();
}
Run Code Online (Sandbox Code Playgroud)
子类圈
public class Circle extends Shape implements Drawable {
double radius;
Circle(double aRadius){
radius= aRadius;
}
double area(){
return Math.PI*radius*radius;
}
public void draw(){
System.out.println("This is a circle");
}
}
Run Code Online (Sandbox Code Playgroud)
子类Rectangle
public class Rectangle extends Shape implements Drawable {
double width, height;
public Rectangle(double aWidth, double aHeight){
width= aWidth;
height= aHeight;
}
double area(){
return width*height;
}
public void draw(){
System.out.println("This is a rectangle.");
}
}
Run Code Online (Sandbox Code Playgroud)
我假设要打印出draw()方法,代码应该是这样的:
Shape obj= new Rectangle();
Shape obj1= new Circle();
obj.draw();
obj1.draw();
Run Code Online (Sandbox Code Playgroud)
但它没有成功.想了解打印draw方法的正确方法以及一些解释,因为我是Java的新手.谢谢.
该draw
方法不可用,因为您Shape
的数组中有s,而不是Drawable
s.理论上你可以UndrawableShape
扩展Shape
但不实现Drawable
,因此编译器不会让你调用draw()
可能不存在的方法.
要拨打电话draw()
,您可以执行以下操作:
而不是让每个具体的子类实现Drawable
,具有Shape
类实现Drawable
. Shape
是的abstract
,所以它不必实现draw()
自己; 子类需要实现该方法.