[英]Java extending classes mess
我不知道我在发布原版时抽的是什么锅,但我清醒过来并想出了这个。 我不是一个有经验的编码员,但整篇文章主要是作为一个大部分已经回答的问题。 我现在知道类不能直接在其中包含代码,核心结构更是如此。
类形状{
public static void ShapeAttemptTwo()
{
class Circle extends Shape
{
public static CircleAttemptTwo()
{
int pi = 3.14;
int r=4;
}
}
class Rectangle extends Shape
{
public static Rectangle()
{
int l = 14;
int b = 10;
int z = l*b;
}
}
class Square extends Shape
{
public static Square()
{
int a = 11;
System.out.println(a * a);
}
}
// Java 代码 7,无效方法声明,需要返回类型。 (public static //CircleAttemptTwo()) // 我对这个迷路了,我可以帮忙吗? // 并在解析} 时到达文件末尾,让我感到困惑。
/编辑 非常感谢。 建设性的暴击。 真的很有帮助,因为我最终获得了很多知识,我的最终代码是
class Shape {
public static void ShapeAttemptTwo()
{
class Circle extends Shape
{
public static CircleAttemptTwo()
{
int pi = 3.14;
int r=4;
}
}
class Rectangle extends Shape
{
public static Rectangle()
{
int l = 14;
int b = 10;
int z = l*b;
}
}
class Square extends Shape
{
public static Square()
{
int a = 11;
System.out.println(a * a);
}
}
你做错了几件事:
1) 你的“静态 main()”属于一个类
2) 每个模块只能有一个“公共课程”。
建议更改:
public abstract class Shape
{
public static void main(String[] args) {
Shape rectangle = new Rectangle (14, 10);
System.println ("rectangle's area=" + rectangle.getArea ());
...
}
}
class Circle extends Shape {
...
}
class Rectangle extends Shape {
int l;
int b;
public Rectangle (int l, int b) {
this.l = l;
this.b = b;
}
public int getArea () {
return l * b;
}
}
...
你在开玩笑? 您缺少 Java 的基本知识:
1) 方法 yea 没有返回类型。
2) Rectangle 类中直接有代码,而不是方法中。
3) 在类 Square 中直接有一个代码,而不是在方法中。
4)您使用了非常奇怪和怪异的代码样式和格式。 更新:格式已修复。
第二次更新:
1) 代码已更改,格式再次错误。
2) 共有三种没有定义返回类型的静态方法。
以下是与该主题相关的更多信息。
除了托马斯指出的错误:
5) 你忘记了Square
声明中的class
一词。
6) 不能直接在方法内部声明public class
。 Java 确实允许您在方法中声明称为“本地类”的类。 但是,我不确定这是否是您真正想要做的; 如果这样做,则只能在main
方法中使用Circle
,因此您并没有真正创建层次结构。 无论如何,当你声明一个本地类时,它不能有public
、 protected
或private
关键字,所以这解释了你看到的第一条错误消息。
编辑:基于第二篇文章:每个方法都必须有一个返回类型; 如果您实际上不希望该方法返回任何内容,则返回类型应为void
。 因此:
public static void CircleAttemptTwo()
{
//int pi = 3.14; should be
double pi = 3.14;
int r=4;
}
但是,构造函数不需要返回类型,但它们不能是static
。 所以public Square()
和public Rectangle()
是可以的。 CircleAttemptTwo
与类名不匹配,因此它不是构造函数。
“到达文件末尾”通常意味着您缺少一个}
,就像您在这里所做的那样。
3.14 不是整数。
你需要改变
int pi = 3.14;
到
double pi = 3.14;
另外,静态方法在错误的地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.