java中各种形式的声明之间的区别

时间:2012-04-08 05:51:38

标签: java variable-declaration

我是Java中的菜鸟,是在python之后学习Java的人。 无论如何,我很难搞清楚这一点。 假设我有班级

class Bicycle{
      ....
 }

 public class Bicycle{
    ....}

有什么区别。

怎么样?
  public static class Bicycle{
              // if this can be a valid class def in first place
   }

然后,在此之后..让我们谈谈变量。

    class Bicycle{
     int Gear or public int Gear // whats the difference
    }

何时使用哪一个?

2 个答案:

答案 0 :(得分:5)

这些关键字(或缺少关键字)称为访问修饰符 - 简而言之,它们控制类或成员的可访问性。

类具有以下修饰符:

  • public - 可随时随地访问
  • (无修饰符) - 只能在同一个包中访问

班级成员有更多可能性:

  • public - 可随时随地访问
  • protected - 只能在扩展类中的同一个包中访问
  • (无修饰符) - 只能在同一个包中访问
  • private - 只能在同一个类文件 *
  • 中访问

*请注意,nested classes可以访问其外部类的private成员,反之亦然。

可以找到有关访问修饰符的更多信息here.另请参阅this helpful article了解基础知识。


修改:我错过了您的中间示例public static class Bicycle - 此处static必须表示Bicycle是嵌套类。有关嵌套类的解释,请参阅this page(我已在下标中链接),这些嵌套类分为静态类和非静态类,即内部类。

答案 1 :(得分:3)

修饰符是Java关键字,它向编译器提供有关代码,数据和类的性质的信息。它分为两种类型。

  1. 访问修饰符:public,protected,private。
  2. 非访问修饰符(final,Abstract,Synchronized,Native, stricfp)。
  3. 如果在课前没有指定任何访问修饰符,它将把它作为“默认”访问说明符。

    public class A     : //access specification would be public. This class can be access any where.
    
    class A            : //access specification would be default. This class can be used only in the same package. So, default is called as package level specification
    

    我们不能将类声明为静态

    public static class A{
    }
    

    但我们可以将内部类声明为静态

    public class A
    {    
         static class B{
    
         }    
    }
    

    为了更清晰,请参阅kathy sierra的“SCJP”中的Access中的Access Modifier