Loading...
Danger_boy21 avatar Danger_boy21 0 Точки

Как се използва static?

Каква е разликата между статична променлива, метод или каквото и да е и нестатична променлива? 

Например съм създал обект Car.

class Car{

static int maxSpeed = 220;

int minSpeed = 0;

}

Каква е разликата между двете променливи дали е статична или нестатична?

Тагове:
0
Java Advanced
NikolayNeykov92 avatar NikolayNeykov92 617 Точки

Когато ползваш static при декларирането на даден член,
можеш да работиш със даден клас, метод, пропърти, 
оператор, конструктор или поле,без да създаваш нова инстанция.
В твоя пример (ако направиш maxSpeed public):
class Car{

public static int maxSpeed = 220;

int minSpeed = 0;

}
можеш да достъпиш maxSpeed така:
Car.maxSpeed = 10;
(без да създаваш нова кола
Car car = new Car(); 
car.maxSpeed=10;)
По удачен пример е метода Array.Sort(arr),
където сортираш даден масив без да създаваш нов масив.

0
Danger_boy21 avatar Danger_boy21 0 Точки

Значи чрез static мога да достъпвам до променливата чрез името на класа и променливата?

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

Да но не е добра практика и нарушава solid принципите. Дa не говорим че ако някои накъде промени тази променлива в кода може да ти счупи цялата логика. В реални случаи такива неща който ти трябват се държат в статични класове който ся достъпни и съществуват през цялото време. Ако искаш да си правиш неща в класа си правиш const някаква и си я подавш през наследяванията.

0
k.sevov avatar k.sevov 1077 Точки

Статичните променливи принадлежат на класа, а нестатичните принадлежат на неговите обекти (инстанции) и изразяват специфичното състояние на всеки от тях. Когато искаш различите обекти да имат различни стойности (в твоя пример различните коли да имат различна скорост) използваш нормални, нестатични променливи. От друга страна ако дадена стойност е обща и винаги еднаква за всички коли можеш да я направиш статична - променлива на класа като цяло. Не знам доколко да влизам в дълбочина с този отговор, така че ще приключа тук и ще се радвам да отговоря на конкретни въпроси за каквото те интересува.

1
11/06/2018 13:36:29
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.