2014-10-16 1 views
0

Я думал, что понял почти все, что нужно знать о модификаторах доступа Java, пока один из моих товарищей по команде просто не совершил какой-то код с тем, что я никогда раньше не видел.Один модификатор доступа Java для нескольких членов

Взгляните на следующий код, обращая внимание на только два модификаторы доступа,

public class Type { 

     private 

     int typeID; 
     String name; 
     String description; 

     public 

     void setTypeId(int arg) 
     { 
      typeID=arg; 
     } 
     int getTypeId() 
     { 
      return typeID; 
     } 

     void setName(String arg) 
     { 
      name=arg; 
     } 
     String getName() 
     { 
      return description; 
     } 

     void setDescription(String arg) 
     { 
      description=arg; 
     } 
     String getDescription() 
     { 
      return description; 
     } 

    } 

Мой товарищ по команде является новым для Java, но происходит от C фона ++, поэтому я думаю, что он создал private и public модификаторы доступа (вот как они сделаны в файлах заголовков для C++). Но это действительно на Java. Я никогда не видел этот синтаксис раньше в Java, и я не могу найти документацию по нему в Интернете.

Если это справедливо означает typeID, name и description все частные и что все функции под public на самом деле являются общественности. Или это означает, что только typeID является приватным и setTypeID является частным (так как они оба заявления члена в рамках двух модификаторов доступа.

ответ

4

Отсутствие модификатора доступа указывает package private.

private Единственный модификатор применяется к typeID поле. Единственный public модификатор применяется к методу setTypeId.

Пробелы и отступы не имеет смысла в Java. (это не имеет значения в C++ либо AFAIK, но в C++ вы бы private:, а не только private.)

Иными словами, это

public class Type { 

    private 

    int typeID; 
    String name; 
    String description; 

такая же, как

public class Type { 

    private int typeID; 
    String name; 
    String description; 

, который так же, как

public class Type { private int typeID; String name; String description; //... 
+0

Да, но это значит, что вы говорите, эти два модификатора доступа, он будет идти только к следующей строке? –

+1

@Bridenstine No. Явные модификаторы применяются только к следующему члену. –

+0

@Bridenstine Это должно читать: _подобное объявление участника_. –

0

typId атрибут был определен как частное, setTypeId был определен как public и другие атрибуты и методы по умолчанию отображаются только для членов одного и того же пакета (пакет частный).

В java каждая команда заканчивается символом ';' терминатор;

Что больше походит на то, что вы думаете, это:

public String name, description; 

Для получения инструкций выше двух атрибутов зависит от «общественного» модификатором.

:)