我是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
}
何时使用哪一个?
答案 0 :(得分:5)
这些关键字(或缺少关键字)称为访问修饰符 - 简而言之,它们控制类或成员的可访问性。
类具有以下修饰符:
public
- 可随时随地访问班级成员有更多可能性:
public
- 可随时随地访问protected
- 只能在扩展类中的同一个包或中访问private
- 只能在同一个类文件 * *请注意,nested classes可以访问其外部类的private
成员,反之亦然。
可以找到有关访问修饰符的更多信息here.另请参阅this helpful article了解基础知识。
修改:我错过了您的中间示例public static class Bicycle
- 此处static
必须表示Bicycle
是嵌套类。有关嵌套类的解释,请参阅this page(我已在下标中链接),这些嵌套类分为静态类和非静态类,即内部类。
答案 1 :(得分:3)
修饰符是Java关键字,它向编译器提供有关代码,数据和类的性质的信息。它分为两种类型。
如果在课前没有指定任何访问修饰符,它将把它作为“默认”访问说明符。
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