50 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Defining Attributes | |||
|  | localeTitle: Определение атрибутов | |||
|  | --- | |||
|  | ## Определение атрибутов
 | |||
|  | 
 | |||
|  | Класс имеет атрибуты и методы. Атрибуты являются в основном переменными внутри класса. | |||
|  | 
 | |||
|  | **_Пример:_** | |||
|  | 
 | |||
|  | ```java | |||
|  | public class Vehicle {  | |||
|  |   int maxSpeed;  | |||
|  |   int wheels;  | |||
|  |   String color;  | |||
|  |   | |||
|  |   void horn() {  | |||
|  |     System.out.println("Beep beep!");  | |||
|  |   }  | |||
|  |  }  | |||
|  | ``` | |||
|  | 
 | |||
|  | `maxSpeed` , `wheels` и `color` - все атрибуты нашего класса Vehicle, а метод `horn()` - единственный. | |||
|  | 
 | |||
|  | ### Создание объектов
 | |||
|  | 
 | |||
|  | Мы можем создать несколько объектов нашего класса Vehicle и использовать точечный синтаксис для доступа к их атрибутам и методам. | |||
|  | 
 | |||
|  | ```java | |||
|  | class MyClass {  | |||
|  |   public static void main(String[] args) {  | |||
|  |     Vehicle v1 = new Vehicle();  | |||
|  |     Vehicle v2 = new Vehicle();  | |||
|  |     v1.color = "red";  | |||
|  |     v2.horn();  | |||
|  |   }  | |||
|  |  }  | |||
|  | ``` | |||
|  | 
 | |||
|  | ### Модификаторы видимости
 | |||
|  | 
 | |||
|  | В приведенном выше примере транспортного средства атрибуты объявляются без модификатора видимости (например, открытого, закрытого или защищенного). Когда модификатор не включен в разделение атрибута, он по умолчанию имеет значение, называемое «private package», что означает, что к этому атрибуту можно получить доступ напрямую, используя «.». точечная нотация любым другим классом внутри одного пакета. | |||
|  | 
 | |||
|  | Доступ к «общедоступным» переменным можно получить из любого класса «Защищенные» переменные могут быть доступны любым классом внутри одного и того же пакета, а также подклассами в любых других пакетах, имеющих родительские дочерние отношения «частные» переменные могут быть доступны только из класса, в котором они объявлены Доступ к частным частям пакета можно получить по классам в одном пакете | |||
|  | 
 | |||
|  | «public», переменные, методы, конструкторы и классы (только один) объявляются как общедоступные. «protected», переменные, методы и конструкторы могут быть объявлены частными, а не классами и интерфейсами. «private», переменные, методы и конструкторы могут быть объявлены частными, а не классами и интерфейсами. «default», переменные, методы, конструкторы и классы могут быть типа по умолчанию (объявлены, не записывая ничего). | |||
|  | 
 | |||
|  | #### public> protected> default> private (на основе удобства доступности)
 | |||
|  | 
 | |||
|  | Как правило, рекомендуется использовать все атрибуты класса private и контролировать доступ к ним с помощью методов «getter» и «setter». |