Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与继承相关的java基础知识_Java - Fatal编程技术网

与继承相关的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);

我是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

可能的原因是什么?是否有其他方法来编译包含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编码。