说我有两节课:
package MyShape;
public abstract class Shapeclass {
public abstract double area(double radius);
protected void print(double area) {
System.out.print("Area is:" + area);
}
}
另一个班级Triangle;
package MyShape;
public class Triangle extends Shapeclass {
double area;
public double area(double radius) {
return radius * radius;
}
public void print() {
super.print(area);
}
}
我已将两个类放在名为MyShape的同一文件夹中但是当我尝试编译Triangle类编译器时显示以下错误;
C:\Users\Desktop\MyShape\Triangle.java:3: error: cannot find symbol
public class Triangle extends Shapeclass
^
symbol: class Shapeclass
C:\Users\Desktop\MyShape\Triangle.java:13: error: cannot find symbol
super.print(area);
^
symbol: variable super
location: class Triangle
请帮我解决一下? 从最近几个小时开始就把它放在心上。
答案 0 :(得分:1)
只要他们在同一个文件夹和包中,你就可以了。
但是,我会对您的课程进行以下更改:
Shapeclass
重命名为Shape
...我们知道它已经是一个类了。将“class”放在类名中不会增加值area()
方法,因此请从print()
方法area
值存储在your shape - just call the
area()`方法中进行这些更改会大大简化您的代码:
public abstract class Shape {
public abstract double area(double radius);
protected void print() { // don't pass anything in!
System.out.print("Area is:" + area()); // call the area() method
}
}
public class Triangle extends Shape {
double radius; // triangles don't have radii, you'll need to store something else
public double area() {
return radius * radius; // This is a questionable calculation. fix it
}
}
答案 1 :(得分:0)
答案 2 :(得分:0)
如果使用基本的javac,则ShapeClass和Triangle这两个类都需要在同一个文件夹中
如果您将它们放在不同的文件夹中,则需要使用javac的-d
选项来指定目录。有关详细信息,请参阅此处:javac
因此建议将两个文件保存在同一文件夹MyShape
中答案 3 :(得分:0)
验证文件名是否与类名匹配,正好是每个字母上的大写/小写。
验证您的当前工作目录(CWD)是否位于包层次结构的根目录中;根据你的编译器输出,它将是“C:\ Users \ Desktop”。这样编译器就可以将包路径“MyShape”作为直接子目录找到。
指定完全限定的包\类名(MyShape \ Triangle)作为要编译的文件名。
因此,显示CWD作为提示和javac命令的命令行可能如下所示:
C:\ Users \用户台式机和GT; javac MyShape \ Triangle
答案 4 :(得分:0)
来自C:\ Users \ Desktop ...
javac -cp . MyShape\Triangle.java
如果您不在C:\ Users \ Desktop ...
javac -cp C:\Users\Desktop C:\Users\Desktop\MyShape\Triangle.java
答案 5 :(得分:0)
从终端编译软件包时,您的工作目录应该是创建软件包的目录。 (在这种情况下是桌面)
所以当你在 C:\ Users \ Desktop 时,然后使用javac MyShape.*.java
编译代码
并以类似方式运行代码。
答案 6 :(得分:0)
单个包中的两个类的程序 这是包含2个类的包的代码: -
package pack;
class pack_add_sub
{
public void ad (int x , int y)
{
System.out.println("The Add of "+x+" & "+y+" is :- "+(x+y));
}
}
public class pack_add_subb extends pack_add_sub
{
public void su (int x, int y)
{
super.ad(x,y);
System.out.println("The Sub of "+x+" & "+y+" is :- "+(x-y));
}
}
现在我们编译它并将类文件保存在包名称文件夹中。在bin文件夹中创建的。
现在,这里是调用在包中创建的两个类的代码: -
import java.io.*;
import java.util.*;
import pack.pack_add_subb;
class calling_pack_add_subb
{
public static void main (String arr[])
{
int a,b;
Scanner ob = new Scanner (System.in);
System.out.println("Enter the same value for add and sub :-");
a=ob.nextInt();
b=ob.nextInt();
pack_add_subb ob1 = new pack_add_subb ();
ob1.su(a,b);
}
}