我是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 类时,它给出了以下错误。为什么会这样
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();
}
}
现在下一个问题是,如果我在所有文件中注释 package 语句,我就能够编译并运行代码。但是如果我包含如上面示例所示的内容,那么在编译 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
可能的原因是什么?是否有其他方法来编译包含包声明的文件?请指导我
最佳答案
嗯,您似乎有两个具有相同签名的 AccessDemo2
构造函数。另外,您还两次拼错 public
。删除第一个构造函数
AccessDemo2(){
}
因为你已经有了另一个。并将所有地方的 Public
更改为 public
。
关于java继承相关基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23862076/