java - 访问说明符错误(找不到符号)

标签 java access-specifier

C:\Users\jaina_000\Desktop\learn_java\p1>javac Testp1.java
Testp1.java:6: error: cannot find symbol
                Protection ob = new Protection();
                ^
  symbol:   class Protection
  location: class Testp1
Testp1.java:6: error: cannot find symbol
                Protection ob = new Protection();
                                    ^
  symbol:   class Protection
  location: class Testp1
Testp1.java:7: error: cannot find symbol
                Derived ob1 = new Derived();
                ^
  symbol:   class Derived
  location: class Testp1
Testp1.java:7: error: cannot find symbol
                Derived ob1 = new Derived();
                                  ^
  symbol:   class Derived
  location: class Testp1
Testp1.java:8: error: cannot find symbol
                SamePackage ob2 = new SamePackage();
                ^
  symbol:   class SamePackage
  location: class Testp1
Testp1.java:8: error: cannot find symbol
                SamePackage ob2 = new SamePackage();
                                      ^
  symbol:   class SamePackage
  location: class Testp1
6 errors
package p1;
public class Testp1
    {
    public static void main(String a[])
        {
        Protection ob = new Protection();
        Derived ob1 = new Derived();
        SamePackage ob2 = new SamePackage();
        }
    }


package p1;

public class Protection
    {

    int n = 1;
    private int n_pri = 2;
    protected int n_pro = 3;
    public int n_pub = 4;

    public Protection()
        {
        System.out.println("Inside base constructor.");
        System.out.println(" n = "+n);
        System.out.println("n_pri = "+n_pri);
        System.out.println("n_pro = "+n_pro);
        System.out.println("n_pub = "+n_pub);
        }
    }


package p1;

class Derived extends Protection
    {
    Derived()
        {
        System.out.println("Inside Derived constructor.");
        System.out.println(" n = "+n);
    //  System.out.println("n_pri = "+n_pri);       
        System.out.println("n_pro = "+n_pro);
        System.out.println("n_pub = "+n_pub);
        }
    }


package p1;

class SamePackage{

    SamePackage(){
        Protection p = new Protection();
        System.out.println("Inside SamePackage constructor.");
        System.out.println(" n = "+p.n);                
    //  System.out.println("n_pri = "+p.n_pri);     
        System.out.println("n_pro = "+p.n_pro);
        System.out.println("n_pub = "+p.n_pub);
    }
}

最佳答案

当你有 package 时,你不能像在没有 package 的类中那样简单地编译或运行。

编译时,您需要导航到包文件夹外部,然后使用命令 javac [package]/[class] 进行编译。因此在您的情况下,它应该是

javac p1/Testp1.java

运行时使用此命令java[package.class]..所以在你的情况下它应该是

java p1.Testp1

确保您不在包 [p1] 内,您应该在包外部 [通过 cmd 导航到文件夹 learn_java 后进行编译]。

最后这就是你的 cmd 的样子

C:\Users\jaina_000\Desktop\learn_java>javac p1/Testp1.java

C:\Users\jaina_000\Desktop\learn_java>java p1.Testp1
Inside base constructor.
 n = 1
n_pri = 2
n_pro = 3
n_pub = 4
Inside base constructor.
 n = 1
n_pri = 2
n_pro = 3
n_pub = 4
Inside Derived constructor.
 n = 1
n_pro = 3
n_pub = 4
Inside base constructor.
 n = 1
n_pri = 2
n_pro = 3
n_pub = 4
Inside SamePackage constructor.
 n = 1
n_pro = 3
n_pub = 4
C:\Users\jaina_000\Desktop\learn_java>

关于java - 访问说明符错误(找不到符号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27508886/

相关文章:

java - 如何使用 Spring JMS 在 SQS 上设置 AUTO_ACKNOWLEDGE?

java - Java 中的指针、 vector 和迭代器

java - 通过选择 JComboBox 选项动态添加 JTextFields 和 JLabels

java - 在同一个包中创建类的对象

java - 如何让 SimpleProperty 通知第一组听众?

Ruby Class#new - 为什么 `new` 是私有(private)方法?

swift - 什么是区分 Swift3 中的 fileprivate 和 private 的好例子

c++ - 访问孙类中基类的 protected 成员

java - 带有接口(interface)的 "Cannot reduce the visibility of the inherited method"的含义

java - 检查 X509 证书吊销