我目前正在我的第一个java类中做一个项目。这是我第一学期的java编码,我是C++ Backbone.js ,所以一直很难拾取东西。我目前面临的主要问题是,无论出于何种原因,我的主文件都无法识别我在类文件中实现的方法。
主文件名为main.java,其标题如下:
package com.auda;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import java.awt.*;
“我的方法”文件的标题如下所示:
package com.auda
import javafx.scene.canvas.GraphicsContext
import java.awt.*;
import java.awt.*;
我得到的错误如下:
symbol:class myshape location:class main main.java:20:错误:找不到symbol myshape s1=new myshape(1000700,color.green);我得到了其中34个错误,都是我的方法文件中的方法。
我的全部代码是https://imgur.com/a/wvym6gc
基本上,编译器拒绝识别类文件中的方法。很抱歉,如果格式不正确。我没有在这个平台上发布代码图片的权限,我也不想发布一大堆代码。
2条答案
按热度按时间ltqd579y1#
randy的回答是正确的,但它不会导致您收到的错误消息(您将收到)
MyShape is Abstract; cannot be instantiated
). 出现您的消息是因为编译器找不到myshape类。导入应能正常工作项目的文件结构如下:
java/com/auda/main.java
java/com/auda/shapes.java
如果您有任何其他文件夹,例如shapes.java位于java/com/auda/shapes/shapes.java中,您将遇到问题。在这种情况下,您需要将shapes.java的包更改为com.auda.shapes,并导入希望使用的类
import com.auda.shapes.MyShape
或import com.auda.shapes.*
.但是,您发布的形状类中只有一个是公共的。您编写的其他类将具有默认可见性,不能在其包之外使用(请参阅https://www.baeldung.com/java-access-modifiers).
c9qzyr3d2#
抽象类(myshape)不能直接从主类启动,您应该创建一个子类来实现抽象类,并使用它来创建新对象。
参考:https://beginnersbook.com/2013/05/java-abstract-class-method/ (第2条规则)
注2:抽象类无法示例化,这意味着您无法创建它的对象。要使用这个类,您需要创建另一个类来扩展这个类并提供抽象方法的实现,然后您可以使用那个子类的对象来调用父类的非抽象方法以及实现的方法(那些在父类中是抽象的但在子类中实现的方法)。