【问题标题】:Two class in a Single File单个文件中的两个类
【发布时间】:2018-01-29 19:30:20
【问题描述】:

我正在准备 OCA Java 8 认证考试。

书上说:

如果你有一个公共类,它需要匹配文件名。上市 类 animal2 不会在文件名 Animal.java 中编译。样品 代码是:

public class Animal{
private String name;
}
class Animal2{

}

但是,如果我创建一个名为“Animal.java”的Java文件,我将代码放入其中并编译它,编译器会生成两个Java类,“animal.class”和“animal2.class”。

学习指南错了吗?

【问题讨论】:

  • Animal2 不是公共类。
  • "Java 提供了一个默认说明符,当没有访问修饰符存在时使用该说明符。任何没有声明访问修饰符的类、字段、方法或构造函数只能由同一包中的类访问。默认值修饰符不用于接口中的字段和方法”。 wideskills.com/java-tutorial/…

标签: java


【解决方案1】:

基本上这本书是说如果一个文件被命名为Animal,那么公共类也必须被称为Animal,否则就会出错。

class Animal2 不公开,这就是它编译良好的原因。

你可以做的是在公共类中拥有一个公共类:

public class Animal{

    public class Animal2{
        ...
    }

    ...

}

这是不可能的:

public class Animal{
      ....
}

public class Animal2{
      ....
}

【讨论】:

    【解决方案2】:

    好的,好的。

    我现在明白了,这本书让我很困惑。

    这会编译并生成两个类(一个公共类 Animal,一个保护类 Animal2):

    public class Animal{
    private String name;
    }
    class Animal2{
    
    }
    

    这不会编译:

    public class Animal{
    private String name;
    }
    public class Animal2{
    
    }
    

    【讨论】:

    • 这实际上并没有回答问题。
    • 是的,java文件中只能有一个公共类,公共类的名称必须与java文件名匹配。
    猜你喜欢
    • 2019-02-18
    • 1970-01-01
    • 2011-10-30
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多