类不是抽象的,并且不会重写抽象方法

2023-12-14

因此,我一直在为我的编程课做抽象作业,但遇到了问题。我现在的目标是能够使用抽象,然后能够用矩形和椭圆形绘制一个简单的城市,例如矩形建筑物或灯柱上的椭圆形灯。

我编译时收到的错误是: MyTestApp.Rectangle 不是抽象的,并且不会覆盖 MyTestApp.Shape 中的抽象方法 drawEllipse(java.awt.Graphics) 。此错误显示在 Shape 类正下方的“class Rectangle extends Shape{”行上。

我的问题是我的抽象做错了什么?我已经搞乱了类 Rectangle 和 Ellipse 中的构造函数和 draw() 方法有一段时间了,但仍然没有找到解决方案。

代码如下:

import java.awt.*;
import javax.swing.*;

public class MyTestApp extends JPanel {
    Rectangle rect;
    Ellipse oval;
    public static void main(String [] args) {
        MyTestApp myTestApp = new MyTestApp ();
        myTestApp.test();
    }

    public MyTestApp () { //creates the jframe
        JFrame frame = new JFrame("MyClass Driver");
        setBackground(new Color(200, 250, 200));
        setPreferredSize(new Dimension(500, 400));
        frame.add(this);
        frame.pack();
        frame.setVisible(true);
    }

    public void delay(int msecs) {
        try {
            Thread.sleep(msecs);
        } catch (InterruptedException e) {
        }
    }

    public void paint(Graphics g) {//paints the rectangle and ellipse
        super.paint(g);
        if (rect != null)
            rect.drawRectangle(g);
        if (oval != null)
            oval.drawEllipse(g);
    }

    public void test() {//gives the x/y position, width/height, and fill/outline color for the rectangle and oval
        delay(1000);
        rect = new Rectangle(20, 30, 23, 75, Color.GREEN, Color.BLUE);
        oval = new Ellipse(10, 10, 10 , 34, Color.RED, Color.MAGENTA);
        repaint();
    }

    public abstract class Shape{//abstract class Shape that sets the x/y, width/height, and colors for the shapes
        private int x, y, width, height;
        private Color fillColor;
        private Color outlineColor;
        public Shape(int x, int y, int width, int height, Color fillColor, Color outlineColor) {
            setXY(x, y);
            setSize(width, height);
            setFillColor(fillColor);
            setOutlineColor(outlineColor);  
        }

        public boolean setXY(int x, int y) {
            this.x = x;
            this.y = y;
            return true;
        }

        public void setSize(int width, int height) {
            if (width > 0)
                this.width = width;
            if (height > 0)
                this.height = height;
        }

        public boolean setFillColor(Color fillColor){
            if (fillColor == null) return false;
            this.fillColor = fillColor; 
            return true;
        }

        public boolean setOutlineColor(Color outlineColor){
            if (outlineColor == null) return false;
            this.outlineColor = outlineColor; 
            return true;
        }

        public Color getFillColor() {
            return fillColor;
        } 

        public Color getOutlineColor() {
            return outlineColor;
        } 

        public abstract void drawRectangle(Graphics g);//do i need two?
        public abstract void drawEllipse(Graphics g);//do i need both?
    }
    class Rectangle extends Shape{//!!!!!!!!!! where the error shows
        public Rectangle(int x, int y, int width, int height, Color fillColor, Color outlineColor) {
            super(x, y, width, height, fillColor, outlineColor);
        }

        public void drawRectangle(Graphics g){//draws the retangle
            g.setColor(fillColor);
            g.fillRect(x, y, width, height);
            g.setColor(outlineColor);
            g.drawRect(x, y, width, height);
        }
    }
    class Ellipse extends Shape{
        public Ellipse(int x, int y, int width, int height, Color fillColor, Color outlineColor) {
            super(x, y, width, height, fillColor, outlineColor);
        }

        public void drawEllipse(Graphics g){//draws the ellipse
            g.setColor(fillColor);
            g.fillOval(x, y, width, height);
            g.setColor(outlineColor);
                g.drawOval(x, y, width, height);
            }
        }
}

感谢您的阅读和帮助!


矩形和椭圆这两个类都需要重写这两个抽象方法。

要解决此问题,您有 3 个选择:

  • 添加两个方法
  • 使每个扩展 Shape 的类成为抽象类
  • 有一个方法来执行将扩展 Shape 的类的功能,并在 Rectangle 和 Ellipse 中重写该方法,例如:

    abstract class Shape {
        // ...
        void draw(Graphics g);
    }
    

And

    class Rectangle extends Shape {
        void draw(Graphics g) {
            // ...
        }
    }

Finally

    class Ellipse extends Shape {
        void draw(Graphics g) {
            // ...
        }
    }

您可以在它们之间切换,如下所示:

    Shape shape = new Ellipse();
    shape.draw(/* ... */);

    shape = new Rectangle();
    shape.draw(/* ... */);

再说一遍,只是一个例子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类不是抽象的,并且不会重写抽象方法 的相关文章

  • NoInitialContextException:heroku 战争部署

    我一直在开发一个 J2EE 项目 并且在其中使用连接池 也通过部署在 heroku 上的数据库进行访问 我使用以下代码来设置 Connection 对象 Context initContext new InitialContext Cont
  • “java.io.IOException:连接超时”和“SocketTimeoutException:读取超时”之间有什么区别

    如果我设置一个套接字 SoTimeout 并从中读取 当读取时间超过超时限制时 我会收到 SocketTimeoutException 读取超时 这是我的例子中的堆栈 java net SocketTimeoutException Read
  • 获取文件的锁

    我想在对特定文件开始 threo read 时获取文件上的锁定 以便其他应用程序无法读取已锁定的文件并希望在线程终止时释放锁定文件 您可以获得一个FileLock https docs oracle com javase 8 docs ap
  • 埃拉托色尼筛法 - 实现返回一些非质数值?

    我用 Java 实现了埃拉托斯特尼筛法 通过伪代码 public static void sieveofEratosthenes int n boolean numArray numArray new boolean n for int i
  • 从 MS Access 中提取 OLE 对象(Word 文档)

    我有一个 Microsoft Access 数据库 其中包含一个包含 Microsoft Word 文档的 OLE 对象字段 我试图找到代码来检索保存在 OLE 对象中的文件 以便用户可以从我的 JavaFx 应用程序中的按钮下载它 但没有
  • 为自定义驱动程序创建 GraphicsDevice

    我正在开发一个在嵌入式系统中使用 Java 的项目 我有用于屏幕和触摸输入的驱动程序 以及用于文本输入的虚拟键盘 我的屏幕驱动程序有一个Graphics2D您可以绘制的对象和repaint Rectangle 更新方法 类似地 触摸驱动器能
  • Spring数据中的本机查询连接

    我有课 Entity public class User Id Long id String name ManyToMany List
  • 是否可以从 servlet 内部以编程方式设置请求上下文路径?

    这是一个特殊情况 我陷入了处理 企业 网络应用程序的困境 企业应用程序正在调用request getContext 并将其与另一个字符串进行比较 我发现我可以使用 getServletContext getContextPath 获取 se
  • 从直方图计算平均值和百分位数?

    我编写了一个计时器 可以测量任何多线程应用程序中特定代码的性能 在下面的计时器中 它还会在地图中填充花费了 x 毫秒的调用次数 我将使用这张图作为我的直方图的一部分来进行进一步的分析 例如调用花费了这么多毫秒的百分比等等 public st
  • 当 minifyEnabled 为 true 时 Android 应用程序崩溃

    我正在使用多模块应用程序 并且该应用程序崩溃时minifyEnabled true in the installed模块的build gradle 以下是从游戏控制台检索到的反混淆堆栈跟踪 FATAL EXCEPTION Controlle
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • 用于缓存的 Servlet 过滤器

    我正在创建一个用于缓存的 servlet 过滤器 这个想法是将响应主体缓存到memcached 响应正文由以下方式生成 结果是一个字符串 response getWriter print result 我的问题是 由于响应正文将不加修改地放
  • 在 Clojure 中解压缩 zlib 流

    我有一个二进制文件 其内容由zlib compress在Python上 有没有一种简单的方法可以在Clojure中打开和解压缩它 import zlib import json with open data json zlib wb as
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • 如何从 Ant 启动聚合 jetty-server JAR?

    背景 免责声明 I have veryJava 经验很少 我们之前在 Ant 构建期间使用了 Jetty 6 的包装版本来处理按需静态内容 JS CSS 图像 HTML 因此我们可以使用 PhantomJS 针对 HTTP 托管环境运行单元
  • 我可以限制分布式应用程序发出的请求吗?

    我的应用程序发出 Web 服务请求 提供商处理的请求有最大速率 因此我需要限制它们 当应用程序在单个服务器上运行时 我曾经在应用程序级别执行此操作 一个对象跟踪到目前为止已发出的请求数量 并在当前请求超出允许的最大负载时等待 现在 我们正在
  • 如何在Java中对对象数组进行字段级别排序以进行等级比较?

    In Java Class StudentProgress String Name String Grade CTOR goes here main class main method StudentProgress arrayofObje
  • JMS 中的 MessageListener 和 Consumer 有什么区别?

    我是新来的JMS 据我了解Consumers能够从队列 主题中挑选消息 那么为什么你需要一个MessageListener因为Consumers会知道他们什么时候收到消息吗 这样的实际用途是什么MessageListener 编辑 来自Me
  • 使用 Java https 上传到 Imgur v3 错误

    我目前正在尝试使用他们当前的 API v3 上传到 imgur 但是我不断收到错误 错误 javax net ssl SSLException 证书中的主机名不匹配 api imgur com imgur com OR imgur com
  • Java 的 PriorityQueue 与最小堆有何不同?

    他们为什么命名PriorityQueue如果你不能插入优先级 它看起来与堆非常相似 有什么区别吗 如果没有区别那为什么叫它PriorityQueue而不是堆 默认的PriorityQueue是用Min Heap实现的 即栈顶元素是堆中最小的

随机推荐

  • ASP.net AJAX 拖/放?

    我想知道是否有人知道是否有一个预先制定的解决方案 我在 ASP net 网站上有一个列表 我希望用户能够通过拖放对列表进行重新排序 此外 我希望有第二个列表 用户可以将第一个列表中的项目拖到其中 到目前为止 我找到了两个解决方案 重新排序列
  • 构建三元网格,在 Matlab 中评估网格上的函数和等高线图

    我需要评估一个函数 比如说 Fxy 2 x 2 3 y 2 在三元网格 x 范围 0 1 y 范围 0 1 和 1 x y 0 1 上 我无法构建需要评估上述函数的三元网格 另外 一旦评估 我需要在三元等高线图中绘制函数 理想情况下 我需要
  • HTML 敏捷包 - 删除不需要的标签而不删除内容?

    我在这里看到了一些相关的问题 但它们并没有完全讨论我面临的同一问题 我想使用HTML 敏捷包从我的 HTML 中删除不需要的标签 而不会丢失标签内的内容 例如 在我的场景中 我想保留标签 b i and u 对于这样的输入 p my par
  • 如何为 Google App Engine 应用程序编写“app.yaml”文件?

    我注册了一个 Google App Engine 应用程序 并且有以下一些文件 index html tabs css tab js temp py 我应该怎样写app yaml file 您应该将静态文件放入某个目录中 例如staticd
  • 在 NumPy 数组中使用 array.dtype = 分配 dtype 值会产生不明确的结果

    我是编程和 numpy 的新手 在阅读教程并在 jupyter notebook 上进行实验时 我想到按如下方式转换 numpy 数组的 dtype import numpy as np c np random rand 4 10 prin
  • 使用 Prolog 计算多项式的 GCD

    标题已经说明了一切 我正在计算两个多项式的 GCD 有什么办法可以在 Prolog 中完成这个任务吗 如果是这样 什么是好的起点 具体来说 我在如何使用 Prolog 实现多项式除法方面遇到了麻烦 编辑以包括示例输入和输出 输入示例 GCD
  • 将 varchar 转换为十进制棒球平均值

    我上传了一个 CSV 文件 它自动将我的所有列转换为 varchar 我需要将值 22 30 转换为 0 223 alter table badv2018 alter column BB Percent decimal 4 3 但我收到错误
  • 柱形图 Microsoft 图表控件 y 轴的百分比值

    我正在尝试获取柱形图 其中我需要在 y 轴上有百分比值并且应该重新计算和缩放 我看到了一些分配最小值和最大值的建议 chart ChartAreas 0 AxisY Minimum 0 但它不会根据百分比调整列高 任何帮助将不胜感激 以下是
  • Windows“Path”环境变量如何工作?

    当这个问题突然出现在我的脑海中时 我最近将 python 添加到了我的环境变量中 当我在命令提示符中输入 python 时 Windows 似乎知道要运行哪个文件 但是 我将 python 添加到这个名为 Path 的环境变量中 并且从未在
  • Windows Phone 8 从手机库获取拍摄的照片

    我正在互联网上搜索如何在我的应用程序中执行此操作 似乎有很多类似以下的指南 http msdn microsoft com en us library windowsphone develop microsoft xna framework
  • 为什么这个 go 代码不使用 goroutine 打印任何内容[重复]

    这个问题在这里已经有答案了 我一定错过了关于 goroutine 的一些非常基本的东西 但是我环顾四周 我看不出有任何理由为什么这不起作用 package main import fmt func main for i 0 i lt 20
  • React-beautiful-dnd 无法与 React-virtualized Table 组件一起正常工作

    预期行为 当从上到下拖动时 行应该被拖动到其目标索引 反之亦然 实际行为 从底部索引拖动到顶部索引时 行不会获得 DnD 从上到下拖动可以工作 但该项目会添加到最后一页索引之后 而不是添加到目标索引 DnD 动画似乎效果不佳 重现步骤 您可
  • 如何以相反的顺序保存panda中的拆分数据?

    您可以使用它来创建数据框 xyz pd DataFrame release 7 June 2013 2012 31 January 2013 February 2008 17 June 2014 2013 我正在尝试使用以下命令将数据拆分并
  • Mockito:将真实对象注入私有@Autowired字段

    我正在使用 Mockito 的 Mock and InjectMocks注释将依赖项注入到用 Spring 注释的私有字段中 Autowired RunWith MockitoJUnitRunner class public class D
  • Spock 框架:间谍问题

    我在 Spock 中使用 Spy 时遇到问题 它要么无法正常工作 要么我的理解是错误的 所以我试图澄清这一点 考虑这段代码 Java public class CallingClass public String functionOne d
  • 无法关闭 ng-bootstrap Modal

    所以我有一个NgbModal其中有一个表单 我想要实现的是在成功提交后关闭它 这是我的模态组件 Component selector create update transaction templateUrl CreateOrUpdateT
  • 尝试使用多部分文件测试休息服务

    我正在尝试测试我创建的休息服务 服务是一个岗位 我想创建一个文件来传递参数 包括多部分文件 此时我正尝试从那里调用该服务 很确定这项服务不起作用 但是当我打电话给休息服务时 我有一个简单的表单 只传递几个值 包括 jpg 这是代码 Http
  • 读取时数据从内存流中被截断

    我有以下代码正在使用StreamWriter写信给MemoryStream 但是 当我尝试读回流时 我得到的数据被截断 using var outStream new MemoryStream using var outWriter new
  • Java:如何在打开另一个 JFrame 时关闭一个 JFrame?

    我的程序以 JFrame 中带有文本字段的图片开始 我希望当用户输入 start 时 它会关闭图片 JFrame 并使用主程序打开另一个 JFrame 我试过了 processEvent new WindowEvent this Windo
  • 类不是抽象的,并且不会重写抽象方法

    因此 我一直在为我的编程课做抽象作业 但遇到了问题 我现在的目标是能够使用抽象 然后能够用矩形和椭圆形绘制一个简单的城市 例如矩形建筑物或灯柱上的椭圆形灯 我编译时收到的错误是 MyTestApp Rectangle 不是抽象的 并且不会覆