我对下面的java并不熟悉,问题听起来可能很愚蠢,但我无法找出到底出了什么问题。
下面是我写的程序。
public class AccessDemo1{
public int a_pub=2;
private int a_pri=3;
int a_def=4;
protected int a_pro=5;
Public AccessDemo1(){
System.out.println("Value of a_pub = " + a_pub);
System.out.println("Value of a_pri = " + a_pri);
System.out.println("Value of a_def = " + a_def);
System.out.println("Value of a_pro = " + a_pro);
}
}
//package p1;
public class AccessDemo2 extends AccessDemo1{
AccessDemo2(){
}
Public AccessDemo2(){
System.out.println("Value of a_pub = " + a_pub);
System.out.println("Value of a_pri = " + a_pri);
System.out.println("Value of a_def = " + a_def);
System.out.println("Value of a_pro = " + a_pro);
}
}
//package p1;
public class demomain{
public static void main(String args[]){
AccessDemo2 ob1 = new AccessDemo2();
}
}在编译demomain类时,它给出了下面的error.Why
demomain.java:7: error: cannot find symbol
AccessDemo2 ob1 = new AccessDemo2();因此,在经过了所有的建议后,我提出了以下修改。我将代码分成三个不同的文件,每个文件包含一个类,如下所示。
具有以下内容的文件AccessDemo1.java
package p1;
public class AccessDemo1{
public int a_pub=2;
private int a_pri=3;
int a_def=4;
protected int a_pro=5;
public AccessDemo1(){
System.out.println("Value of a_pub = " + a_pub);
System.out.println("Value of a_pri = " + a_pri);
System.out.println("Value of a_def = " + a_def);
System.out.println("Value of a_pro = " + a_pro);
}
}具有以下内容的文件AccessDemo2.java
package p1;
public class AccessDemo2 extends AccessDemo1{
public AccessDemo2(){
System.out.println("Value of a_pub = " + a_pub);
//System.out.println("Value of a_pri = " + a_pri);
System.out.println("Value of a_def = " + a_def);
System.out.println("Value of a_pro = " + a_pro);
}
}最后一个像demomain.java这样的文件
package p1;
public class demomain{
public static void main(String args[]){
AccessDemo2 ob1 = new AccessDemo2();
}
}现在,下一个问题是,如果我在所有的files.But中注释包语句,我就能够编译和运行代码,如果我包括了上面的例子,那么在编译demomain.java时,我会得到下面的错误。
D:\javastudy>javac demomain.java
demomain.java:7: error: cannot find symbol
AccessDemo2 ob1 = new AccessDemo2();
^
symbol: class AccessDemo2
location: class demomain
demomain.java:7: error: cannot find symbol
AccessDemo2 ob1 = new AccessDemo2();
^
symbol: class AccessDemo2
location:
class demomain
2 errors可能的原因是什么?还有其他方法来编译包含包语句的文件吗?请指导我。
发布于 2014-05-26 05:43:01
它的接缝问题不是您的代码,而是您正在使用的folder/package结构。
D:\javastudy>javac demomain.java这个命令告诉我,您的没有,没有物理创建的任何名为p1的包。这就是为什么您可以在没有package语句的情况下运行代码,而不能使用package语句运行代码。
为了解决包问题,需要在javastudy下创建一个文件夹,名为p1 (as this is your package name)和,将所有三个类移到folder.And中,然后尝试使用以下方法编译:
D:\javastudy>javac p1\demomain.javarun使用:
D:\javastudy>java p1.demomain希望这能有所帮助。
发布于 2014-05-26 02:57:10
那么,您似乎有两个对AccessDemo2具有相同签名的构造函数。另外,您有两次拼写错误的public。删除第一个构造函数
AccessDemo2(){
}因为你已经有了另一个。并在任何地方将Public更改为public。
https://stackoverflow.com/questions/23862076
复制相似问题