【问题标题】:Class access modifier类访问修饰符
【发布时间】:2014-10-08 20:16:52
【问题描述】:

我有以下两个类

package one;
public class Student
{
    //Some code
}

package two;
public class Test
{ 
     public static void main(String args[])
     {
           Student s = new Student();
           //Some code
      }
 }

即使“Student”类具有公共访问修饰符,每当我尝试在来自另一个包的 Test 类中为 Student 类创建对象时,eclipse 都会指出错误,说我需要导入学生类或创建一个新类。

我想如果一个类被声明为公共的,它就可以从任何地方访问。但是为什么 eclipse 称它为错误呢?

【问题讨论】:

  • 使用同一个包
  • 使用完全限定名:one.Student

标签: java eclipse


【解决方案1】:

您没有import 语句,因此编译器不知道Student 是指one.Student。您可以使用:

import one.Student;

import one.*;

...或者只是在创建对象时完全限定名称:

one.Student s = new one.Student();

这不是可访问性的问题 - 编译器不知道如何将标识符 Student 解析为完全限定的类名。

【讨论】:

    【解决方案2】:

    如果该类在另一个包中,则需要导入它,像这样

    import one.Student;
    

    然后你就可以使用它了。这是为了避免在构建路径中的任何其他类具有相同名称时产生歧义。

    【讨论】:

      【解决方案3】:

      如果一个类是公共的,这意味着你可以在它的包之外的另一个包中使用它。不过,您仍然需要导入该类。

      import one.Student
      

      如果一个类是包私有的,它可以在同一个包中使用,但不能被其他包导入

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-13
        • 2014-01-02
        • 1970-01-01
        • 2014-11-03
        • 2012-11-14
        • 2014-08-27
        • 2023-03-05
        • 2017-08-18
        相关资源
        最近更新 更多