【问题标题】:Implementation OOP in JAVA在JAVA中实现OOP
【发布时间】:2020-03-12 01:36:45
【问题描述】:

我想在 JAVA 中实现这个 OOP 图。

这是面向对象编程中的 Is-a 关系吗?

我写了一些代码,但我有一个错误。

我的实现正确吗?如何修复此代码?

您能解释一下我在这段代码中遇到的问题吗?

提前致谢

线程“main”java.lang 中的异常。错误:未解决的编译问题:

公共类型 Circle 必须在自己的文件中定义 公共类型 Square 必须在自己的文件中定义

import java.util.*;

abstract class Shape
{
    boolean Visit = false;
    abstract void CalculatePerimeter();
    abstract void CalculateArea();
    public Shape(Boolean q) {
        Visit = q;
    }
}
public class Circle extends Shape {
    private int radius = 1;
    private final double PI = 3.14;

    public Circle(final Boolean q, final int r) {
        super(q);
        radius = r;
    }
    @Override
    void CalculateArea() {
        System.out.printf("Area of Circle is %d \n", PI * radius * radius);
    }
    @Override
    void CalculatePerimeter() {
        System.out.printf("Perimeter of Circle is %d \n", 2 * PI * radius);
    }
}
public class Square extends Shape {
    private int side = 1;
    public Square(final Boolean q, final int s) {
        super(q);
        side = s;
    }
    @Override
    void CalculateArea() {
        System.out.printf("Area of Square is %d \n", side * side);
    }
    @Override
    void CalculatePerimeter() {
        System.out.printf("Perimeter of Square is %d \n", side * 4);
    }
}
public class NEW {
    public static void main(final String[] args) {
        Circle cricle = new Circle(true, 10);
         Square square = new Square(true, 10);
        }
    }

【问题讨论】:

  • 错误信息是什么?
  • 你想要Shape circle = new Circle(true, 10);Shape square = new Square(true, 10);(你在那里交换了订单)。另外,What does it mean to “program to an interface”?
  • 我提出了错误信息。
  • @Hadi 您是否主动忽略了错误消息告诉您的内容?

标签: java oop


【解决方案1】:

以下任何一种解决方案都可以:

  1. CircleSquare类的定义中删除关键字public
  2. 将类 CircleSquare 按原样(即使用 public 关键字)写入单独的文件中。

原因是Java在一个源文件中只支持一个public类。

还有几点:

A.您应该按如下方式实例化CircleSquare

Shape circle = new Circle(true, 10);
Shape square = new Square(true, 10);

B.根据您的任务(在图片中),您应该使用boolean,但您使用了Boolean。请注意,它与编译错误无关。

【讨论】:

  • 谢谢,我的问题已经解决了,我现在没有任何错误信息。但是我的实现是按照图来的吗?还是我应该使用接口?
【解决方案2】:

将每个类分离到一个新的 java 文件中。 Java 不会编译包含许多 public class 声明的文件。

【讨论】:

  • 没错,但如果这是问题所在,则会显示另一条错误消息(“类定义必须在其自己的文件中”或类似的东西)。
  • @AnisR。这的问题。看看编辑过的问题。
【解决方案3】:
Cricle cricle = new Circle(true, 10);

注意错字! (您的代码中很多地方都有Cricle 而不是Circle)。

编辑:在对问题进行最新编辑后,您的代码运行良好(假设每个类都在其单独的文件中)。您确定在重新运行程序之前再次保存了文件吗?

【讨论】:

  • 我编辑了问题,但仍有问题
  • @ArvindKumarAvinash 我做了,但在主要方法中,OP 输入了Circle
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-12
  • 2017-03-15
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
相关资源
最近更新 更多