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);
        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/

相关文章:

JavaCV : cvLoadImage returns null no matter what I pass it

java - 集成 JBoss Errai 和 Spring?

java - 重写 equals() 与重写compareTo()

java - LazyInitializationException Spring Boot

java - 如何在 Apache Camel 中测试多个 RouteBuilder

java.lang.NoSuchMethodException : Unknown property '' on class 'class java.lang.String' 异常

java - 创建HashMap作为对象的缓存,关键对象的问题

java - SWT - 表格/组合框

Java - 使用 java 1.4 编译 src/main/java 并使用 1.5 编译 src/test/java

javascript - 为什么执行此 split() 函数时 java 与 javascript 不同