首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与继承相关的java基础

与继承相关的java基础
EN

Stack Overflow用户
提问于 2014-05-26 02:54:30
回答 2查看 116关注 0票数 0

我对下面的java并不熟悉,问题听起来可能很愚蠢,但我无法找出到底出了什么问题。

下面是我写的程序。

代码语言:javascript
复制
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

代码语言:javascript
复制
demomain.java:7: error: cannot find symbol
AccessDemo2 ob1 = new AccessDemo2();

因此,在经过了所有的建议后,我提出了以下修改。我将代码分成三个不同的文件,每个文件包含一个类,如下所示。

具有以下内容的文件AccessDemo1.java

代码语言:javascript
复制
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

代码语言:javascript
复制
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这样的文件

代码语言:javascript
复制
package p1;

public class demomain{

    public static void main(String args[]){

        AccessDemo2 ob1 = new AccessDemo2();

    }

}

现在,下一个问题是,如果我在所有的files.But中注释包语句,我就能够编译和运行代码,如果我包括了上面的例子,那么在编译demomain.java时,我会得到下面的错误。

代码语言:javascript
复制
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

可能的原因是什么?还有其他方法来编译包含包语句的文件吗?请指导我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-26 05:43:01

它的接缝问题不是您的代码,而是您正在使用的folder/package结构。

代码语言:javascript
复制
D:\javastudy>javac demomain.java

这个命令告诉我,您的没有,没有物理创建的任何名为p1的包。这就是为什么您可以在没有package语句的情况下运行代码,而不能使用package语句运行代码。

为了解决包问题,需要javastudy下创建一个文件夹,名为p1 (as this is your package name),将所有三个类移到folder.And中,然后尝试使用以下方法编译:

代码语言:javascript
复制
D:\javastudy>javac p1\demomain.java

run使用:

代码语言:javascript
复制
D:\javastudy>java p1.demomain

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2014-05-26 02:57:10

那么,您似乎有两个对AccessDemo2具有相同签名的构造函数。另外,您有两次拼写错误的public。删除第一个构造函数

代码语言:javascript
复制
AccessDemo2(){
}

因为你已经有了另一个。并在任何地方将Public更改为public

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23862076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档