2012-04-08 1 views
0

Я ноб на Java и являюсь тем, кто изучает 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 
    } 

Когда использовать какой?

ответ

5

Эти ключевые слова (или их отсутствие) известны как модификаторы доступа - короче говоря, они контролируют доступность классов или членов.

Классы имеют следующие модификаторы:

  • public - доступны в любом месте
  • (без модификатора) - доступен только в одном пакете

Члены класса имеют больше возможностей:

  • public - Доступно в любом месте
  • protected - доступен только в одном пакете или в классе-
  • (без модификатора) - доступен только в одном пакете
  • private - доступен только в одном файле класса *

* Обратите внимание, что nested classes может обращаться к членам своего внешнего класса private и наоборот.

Дополнительную информацию о модификаторах доступа можно найти here. Также см. this helpful article для основ.


Edit: я пропустил свой средний пример, с public static class Bicycle - в static здесь должно означать, что Bicycle является вложенным классом. См. this page (который я уже связал в своем индексе) для объяснения вложенных классов, которые разбиваются на статические классы и нестатические, а также на внутренние классы.

3

Модификаторы - это ключевые слова Java, которые предоставляют компилятору информацию о характере кода, данных и классов. Он подразделяется на два типа.

  1. Модификаторы доступа: общедоступные, защищенные, закрытые.
  2. Модификаторы не-доступа (окончательные, реферат, синхронные, родные, 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{ 

    }  
} 

Чтобы получить больше ясности см Модификатор доступа в Java с «SCJP» by kathy sierra

 Смежные вопросы

  • Нет связанных вопросов^_^