与继承相关的java基础知识
我是java新手,下面的问题可能听起来很愚蠢,但我无法理解到底哪里出了问题 下面是我写的程序与继承相关的java基础知识,java,Java,我是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);
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
可能的原因是什么?是否有其他方法来编译包含package语句的文件?请指导我好吧,您似乎有两个构造函数对
AccessDemo2
具有相同的签名。此外,您有两次拼写错误public
。删除第一个构造函数
AccessDemo2(){
}
既然你已经有另一个了。然后将
Public
更改为Public
。问题不在于您的代码,而在于您使用的文件夹/包结构
D:\javastudy>javac demomain.java
此命令告诉我,没有物理创建任何名为p1
的包。这就是为什么您可以在不使用package语句而不使用package语句的情况下运行代码的原因
为了解决软件包问题,您需要在javastudy
下创建一个名为p1(因为这是您的软件包名称)
的文件夹,并将所有三个类移动到该文件夹中。然后尝试使用以下方法编译:
D:\javastudy>javac p1\demomain.java
而run正在使用:
D:\javastudy>java p1.demomain
希望这有帮助。始终避免使用无名包。是的,所有代码都在一个文件中。您的AccessDemo2编译了吗?您是否能够创建AccessDemo1的对象?为什么P大写字母在“Public AccessDemo2(){”中构造函数?我不这么认为。每个源文件必须有一个公共类。
package P1;
package P1;
这可能是问题所在?BCU包名称区分大小写。这条注释呢?是的,所有代码都在一个文件中。同一文件中有多个公共类。该注释仅在我的answ发布前7秒发布呃。我不会去回顾性地修复我看到时不在问题中的东西。谢谢你纠正我。我再次尝试并修改了我的代码,但在使用package语句后,现在面临奇怪的问题。我编辑了上面的问题,并添加了几行,请再次纠正。@DavidWallace请帮助测量你的f在名为p1
的目录中的iles?源文件的目录结构必须与类的包结构相匹配。如果它对您有帮助,请接受作为答案。Hv fun编码。