我正在尝试运行以下简单代码,
public abstract class Shape{
abstract double area();
abstract double circumference();
public void show()
{
System.out.println("Area = "+area());
System.out.println("Circumference = "+circumference());
}
}
public class Circle extends Shape{
double r;
public double area()
{
return 3.14*r*r;
}
double circumference()
{
return 2*3.14*r;
}
Circle(double radius)
{
r=radius;
}
}
public class Rectangle extends Shape{
double x,y;
double area()
{
return x*y;
}
double circumference()
{
return 2*(x+y);
}
Rectangle(double length, double width)
{
x = length;
y = width;
}
}
public class Geometry
{
Circle r = new Circle(2.22);
Rectangle s = new Rectangle(2.33, 3.44);
r.show();
}
但我不断从Java编译器获得标识符预期错误。我究竟做错了什么。一切都是公开的,似乎没有语法错误。请帮忙。
答案 0 :(得分:6)
这是问题所在:
class Geometry
{
Circle r = new Circle(2.22);
Rectangle s = new Rectangle(2.33, 3.44);
r.show();
}
你的最终陈述没有宣布变量 - 这只是一个陈述。这需要属于初始化块,构造函数或方法。例如:
public class Geometry {
public static void showCircle() {
Circle r = new Circle(2.22);
Rectangle s = new Rectangle(2.33, 3.44);
r.show();
}
}
请注意,这与继承无关 - 此代码会产生同样的问题:
class Test {
System.out.println("Oops");
}
答案 1 :(得分:4)
您对r.show();
的来电不在代码块中。我怀疑你打算放置这是一个主要的方法
public static void main(String... args) {
Circle r = new Circle(2.22);
Rectangle s = new Rectangle(2.33, 3.44);
r.show();
}
答案 2 :(得分:2)
添加主要方法:
public class Geometry
{
public static void main(String[] args) {
Circle r = new Circle(2.22);
Rectangle s = new Rectangle(2.33, 3.44);
r.show();
}
}