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». |