0

我是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
    }

什么时候用哪一个?

4

2 回答 2

5

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

类具有以下修饰符:

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

类成员有更多的可能性:

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

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

可以在此处找到有关访问修饰符的更多信息。另请参阅这篇有用的文章了解基础知识。


编辑:我错过了你的中间例子,public static class Bicycle这里static必须意味着这Bicycle是一个嵌套类。有关嵌套类的说明,请参阅此页面(我已经在下标中链接了该页面),嵌套类分为静态类和非静态(也称为内部)类。

于 2012-04-08T05:54:07.933 回答
3

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

  1. 访问修饰符:public、protected、private。
  2. 非访问修饰符(final、Abstract、Synchronized、Native、stricfp)。

如果您没有在类之前指定任何访问修饰符,它将把它作为“默认”访问说明符。

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”中的 Java 中的访问修饰符

于 2012-04-08T06:25:52.790 回答