JavaRush/Java Π±Π»ΠΎΠ³/Архив info.javarush/10 Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π΅ Static Π² Java
Автор
Pavlo Plynko
Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π² CodeGym

10 Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π΅ Static Π² Java

Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ Архив info.javarush
участников
ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ static Π² Java Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ связан с классом. Если ΠΏΠΎΠ»Π΅ статично, Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΎΠ½ΠΎ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ классу, Ссли ΠΌΠ΅Ρ‚ΠΎΠ΄ статичный β€” Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ: ΠΎΠ½ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ классу. Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· этого, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ статичСскому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΈΠ»ΠΈ полю, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ имя класса. НапримСр, Ссли ΠΏΠΎΠ»Π΅ count статично Π² классС Counter, Π·Π½Π°Ρ‡ΠΈΡ‚, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ запросом Π²ΠΈΠ΄Π°: Counter.count. 10 Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π΅ Static Π² Java - 1ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ вспомним (Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΡƒΠ·Π½Π°Π΅ΠΌ), Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ static ΠΈ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ статичСским Π² Java. Static β€” ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, примСняСмый ΠΊ полю, Π±Π»ΠΎΠΊΡƒ, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΈΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ классу. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° привязку ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ классу.

БтатичСскиС поля

ΠŸΡ€ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ уровня класса ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ относится ΠΊ классу. Если этого Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, созданному ΠΏΠΎ этому классу. Π§Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚? 10 Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π΅ Static Π² Java - 2 А Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ссли пСрСмСнная Π½Π΅ статичСская, Ρ‚ΠΎ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса Π±ΡƒΠ΄Π΅Ρ‚ своё Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, мСняя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ мСняСм Π΅Π³ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅: НапримСр, Ρƒ нас Π΅ΡΡ‚ΡŒ класс Car с нСстатичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
public class Car {
  int km;
}
Π’ΠΎΠ³Π΄Π° Π² main:
Car orangeCar = new Car();
orangeCar.km = 100;

Car blueCar = new Car();
blueCar.km = 85;

System.out.println("Orange car - " + orangeCar.km);
System.out.println("Blue car - " + blueCar.km);
Π’Ρ‹Π²ΠΎΠ΄ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

Orange car - 100
Blue car - 85
Как Π²ΠΈΠ΄ΠΈΠΌ, Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° своя пСрСмСнная, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Ну Π° Ссли Ρƒ нас пСрСмСнная статичСская, Ρ‚ΠΎ это глобальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” ΠΎΠ΄Π½ΠΎ для всСх: Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Car со статичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
public class Car {
  static int km;
}
Π’ΠΎΠ³Π΄Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ Π² main Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π² консоль:

Orange car - 85
Blue car - 85
Π’Π΅Π΄ΡŒ пСрСмСнная Ρƒ нас ΠΎΠ΄Π½Π° Π½Π° всСх, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΌΡ‹ мСняСм ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π΅. К статичСским ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π½Π΅ ΠΏΠΎ ссылкС Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€” orangeCar.km, Π° ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ класса β€” Car.km

БтатичСский Π±Π»ΠΎΠΊ

Π•ΡΡ‚ΡŒ Π΄Π²Π° Π±Π»ΠΎΠΊΠ° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ β€” ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΈ статичСский. Π‘Π»ΠΎΠΊ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Если Π±Π»ΠΎΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ, Ρ‚ΠΎ ΠΈΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ссли ΠΆΠ΅ статичСский, соотвСтствСнно, ΠΈΠΌ Π·Π°Π΄Π°ΡŽΡ‚ статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ класса со статичСским Π±Π»ΠΎΠΊΠΎΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:
public class Car {
  static int km;

  static {
     km = 150;
  }
}

БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ привязаны ΠΊ классу, Π° Π½Π΅ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. Π’Π°ΠΆΠ½Ρ‹ΠΌ свойством статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ статичСским ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ/ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΊΠΈΠΌ счётчиком, Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌ ΡƒΡ‡Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:
public class Counter {
  static int count;

  public static void invokeCounter() {
     count++;
     System.out.println("Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика - " + count);
  }
}
Π’Ρ‹Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ Π² main:
Counter.invokeCounter();
Counter.invokeCounter();
Counter.invokeCounter();
И ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π²Ρ‹Π²ΠΎΠ΄ Π² консоль:

Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика - 1
Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика - 2
Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика - 3

БтатичСский класс Π² Java

БтатичСским классом ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, этот класс привязан ΠΊ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ классу, ΠΈ Ссли внСшний наслСдуСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ классом, Ρ‚ΠΎ этот Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ наслСдован. ΠŸΡ€ΠΈ этом Π΄Π°Π½Π½Ρ‹ΠΉ класс ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс. По сути статичСский Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ класса Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ содСрТит ссылку Π½Π° создавший Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ внСшнСго класса. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, благодаря этому статичСский класс Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Π½Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ, вСдь СдинствСнноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях для нас это прСимущСство, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ с Π½Π΅Π³ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ доступ ΠΊ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌ статичСским ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ внСшнСго класса. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ статичСского класса:
public class Vehicle {

  public static class Car {
     public int km;
  }
}
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экзСмпляра Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅ значСния Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
Vehicle.Car car = new Vehicle.Car();
car.km = 90;
Для использования статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²/ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…/класса Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа. НапримСр, поля private доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹. Поля protected доступны всСм классам Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° (package), Π° Ρ‚Π°ΠΊΠΆΠ΅ всСм классам-наслСдникам Π²Π½Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Для Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ со ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ β€œprivate vs protected vs public”. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, сущСствуСт статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ increment() Π² классС Counter, Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ счётчика count. Для Π²Ρ‹Π·ΠΎΠ²Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° Counter.increment(). НСт нСобходимости ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ экзСмпляр класса Counter для доступа ΠΊ статичСскому полю ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ. Π­Ρ‚ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ статичСскими ΠΈ НЕ статичСскими ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ (Ρ‡Π»Π΅Π½Π°ΠΌΠΈ класса). Π•Ρ‰Π΅ Ρ€Π°Π· напомню, Ρ‡Ρ‚ΠΎ статичСскиС Ρ‡Π»Π΅Π½Ρ‹ класса Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ классу, Π° Π½Π΅ Π΅Π³ΠΎ экзСмпляру. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ статичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ count Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ для всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° Counter. Π”Π°Π»Π΅Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΠ΅ аспСкты примСнСния ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° static Π² Java, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ особСнности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ программирования.

Π§Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ программист ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π΅ Static Π² Java

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ рассмотрим основныС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ использования статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΏΠΎΠ»Π΅ΠΉ ΠΈ классов. Начнём с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….
  1. Π’Ρ‹ НЕ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ НЕ статичСским Ρ‡Π»Π΅Π½Π°ΠΌ класса, Π²Π½ΡƒΡ‚Ρ€ΠΈ статичСского контСкста, ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠ°. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ компиляции ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ошибка:

    public class Counter{
    private int count;
    public static void main(String args[]){
       System.out.println(count); //compile time error
    }}

    Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённых ошибок допускаСмых программистами Java, особСнно Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌΠΈ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ main статичный, Π° пСрСмСнная count Π½Π΅Ρ‚, Π² этом случаС ΠΌΠ΅Ρ‚ΠΎΠ΄ println, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° main выбросит β€œCompile time error”.

  2. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, статичСскиС поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ НЕ потокобСзопасны (Thread-safe) Π² Java. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ частых ΠΏΡ€ΠΈΡ‡ΠΈΠ½ возникновСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ связанных с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ программирования. Учитывая Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр класса ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ копию статичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎ такая пСрСмСнная нуТдаСтся Π² Π·Π°Ρ‰ΠΈΡ‚Π΅ β€” Β«Π·Π°Π»ΠΎΡ‡ΠΈΠ²Π°Π½ΠΈΠΈΒ» классом. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ использовании статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ синхронизированы (synchronized), Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ «состояниС Π³ΠΎΠ½ΠΊΠΈΒ» (race condition).

  3. БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ прСимущСство Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, Ρ‚.ΠΊ. отсутствуСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для доступа ΠΊ Ρ‚Π°ΠΊΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ. БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΈΠΏ класса, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ описаны. ИмСнно поэтому, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠ°ΠΊ нСльзя Π»ΡƒΡ‡ΡˆΠ΅ подходят Π² качСствС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²-Ρ„Π°Π±Ρ€ΠΈΠΊ (factory), ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ (utility). Класс java.lang.Math β€” Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΡ‡Ρ‚ΠΈ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ статичны, ΠΏΠΎ этой ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ классы-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Π² Java Ρ„ΠΈΠ½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ (final).

  4. Π”Ρ€ΡƒΠ³ΠΈΠΌ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠΌ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ НЕ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ (Override) статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Если Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² классС-наслСдникС (subclass), Ρ‚.Π΅. ΠΌΠ΅Ρ‚ΠΎΠ΄ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ сигнатурой, Π²Ρ‹ лишь «спрячСтС» ΠΌΠ΅Ρ‚ΠΎΠ΄ супСркласса (superclass) вмСсто пСрСопрСдСлСния. Π­Ρ‚ΠΎ явлСниС извСстно ΠΊΠ°ΠΊ сокрытиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (hiding methods). Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ статичСскому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ объявлСн ΠΊΠ°ΠΊ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ, Ρ‚Π°ΠΊ ΠΈ Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ классС, Π²ΠΎ врСмя компиляции всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ исходя ΠΈΠ· Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ пСрСопрСдСлСния, Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

    class Vehicle{
         public static void  kmToMiles(int km){
              System.out.println("Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса/статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π°");
         } }
    
    class Car extends Vehicle{
         public static void  kmToMiles(int km){
              System.out.println("Π’Π½ΡƒΡ‚Ρ€ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса/статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ");
         } }
    
    public class Demo{
       public static void main(String args[]){
          Vehicle v = new Car();
           v.kmToMiles(10);
      }}

    Π’Ρ‹Π²ΠΎΠ΄ Π² консоль:

    Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса/статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

    Код наглядно дСмонстрируСт: нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Car, Π²Ρ‹Π·Π²Π°Π½ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Vehicle, Ρ‚.ΠΊ. ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Π²ΠΎ врСмя компиляции. И Π·Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, ошибки Π²ΠΎ врСмя компиляции Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ!

  5. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ статичСским Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ класс, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ классов Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня. Π’Π°ΠΊΠΈΠ΅ классы извСстны ΠΊΠ°ΠΊ Β«Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ статичСскиС классы» (nested static class). Они Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ для прСдставлСния ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹Ρ… связСй. Π―Ρ€ΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ статичСского класса β€” HashMap.Entry, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт структуру Π΄Π°Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ HashMap. Π‘Ρ‚ΠΎΠΈΡ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы находятся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ .class. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли Π²Ρ‹ объявили ΠΏΡΡ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… классов Π² вашСм Π³Π»Π°Π²Π½ΠΎΠΌ классС, Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ 6 Ρ„Π°ΠΉΠ»ΠΎΠ² с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .class. Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ использования являСтся объявлСниС собствСнного ΠΊΠΎΠΌΠΏΠ°Ρ€Π°Ρ‚ΠΎΡ€Π° (Comparator), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠΏΠ°Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠΎ возрасту (AgeComparator) Π² классС сотрудники (Employee).

  6. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ static Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ объявлСн Π² статичном Π±Π»ΠΎΠΊΠ΅, Π±ΠΎΠ»Π΅Π΅ извСстным ΠΊΠ°ΠΊ «БтатичСский Π±Π»ΠΎΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈΒ» (Static initializer block), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ класса. Если Π²Ρ‹ Π½Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ Π±Π»ΠΎΠΊ, Ρ‚ΠΎ Java собСрёт всС статичСскиС поля Π² ΠΎΠ΄ΠΈΠ½ список ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Π΅Π³ΠΎ Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ класса. Однако, статичный Π±Π»ΠΎΠΊ НЕ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π½Π΅ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Π΅. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ Β«Exception Initializer ErrorΒ». На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, любоС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ возникшСС Π²ΠΎ врСмя выполнСния ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ статичСских ΠΏΠΎΠ»Π΅ΠΉ, Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Ρ‘Ρ€Π½ΡƒΡ‚ΠΎ Java Π² эту ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ самая частая ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ошибки Β«No Class Def Found ErrorΒ», Ρ‚.ΠΊ. класс Π½Π΅ находился Π² памяти Π²ΠΎ врСмя обращСния ΠΊ Π½Π΅ΠΌΡƒ.

  7. ПолСзно Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π²ΠΎ врСмя компиляции, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ связывания Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ Π½Π΅ статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π²ΠΎ врСмя исполнСния Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Java, Ρ‚.ΠΊ. ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π²ΠΎ врСмя выполнСния Π½Π΅ распространяСтся Π½Π° Π½ΠΈΡ…. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, объявляя ΠΌΠ΅Ρ‚ΠΎΠ΄ статичСским. Π’ этом Π΅ΡΡ‚ΡŒ смысл, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚ возмоТности ΠΈΠ»ΠΈ нСобходимости пСрСопрСдСлСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° классами-наслСдниками. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹-Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΎΠ±Ρ€Π°Π·Ρ†Ρ‹ примСнСния ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° static. Π”ΠΆΠΎΡˆΡƒΠ° Π‘Π»ΠΎΡ… Π²Ρ‹Π΄Π΅Π»ΠΈΠ» нСсколько прСимущСств использования статичного ΠΌΠ΅Ρ‚ΠΎΠ΄Π°-Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ ΠΏΠ΅Ρ€Π΅Π΄ конструктором, Π² ΠΊΠ½ΠΈΠ³Π΅ Β«Effective JavaΒ», которая являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ для прочтСния ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ программистом Π΄Π°Π½Π½ΠΎΠ³ΠΎ языка.

  8. Π’Π°ΠΆΠ½Ρ‹ΠΌ свойством статичСского Π±Π»ΠΎΠΊΠ° являСтся инициализация. БтатичСскиС поля ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ класса Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ свСрху Π²Π½ΠΈΠ·, Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ порядкС, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΎΠ½ΠΈ описаны Π² исходном Ρ„Π°ΠΉΠ»Π΅ Java класса. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ статичСскиС поля ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° потокобСзопасный ΠΌΠ°Π½Π΅Ρ€, это свойство Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° Singleton. Если Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ список Enum ΠΊΠ°ΠΊ Singleton, ΠΏΠΎ Ρ‚Π΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, Ρ‚ΠΎ для вас Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°. Но Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡Π΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Π½Π΅ «лСнивая» инициализация. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ статичСскоС ΠΏΠΎΠ»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π΅Ρ‰Ρ‘ Π”Πž Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΠ± этом «попросит». Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ рСсурсоёмкий ΠΈΠ»ΠΈ Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‚ΠΎ инициализация Π΅Π³ΠΎ Π² статичСском Π±Π»ΠΎΠΊΠ΅ сыграСт Π½Π΅ Π² Π²Π°ΡˆΡƒ ΠΏΠΎΠ»ΡŒΠ·Ρƒ.

  9. Π’ΠΎ врСмя сСриализации, Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ transient ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, статичСскиС поля Π½Π΅ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² статичСском ΠΏΠΎΠ»Π΅, Ρ‚ΠΎ послС дСсСриализации Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅ (ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли статичСским ΠΏΠΎΠ»Π΅ΠΌ Π±Ρ‹Π»Π° пСрСмСнная Ρ‚ΠΈΠΏΠ° int, Ρ‚ΠΎ Π΅Ρ‘ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ послС дСсСриализации Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ, Ссли Ρ‚ΠΈΠΏΠ° float – 0.0, Ссли Ρ‚ΠΈΠΏΠ° Object – null. ЧСстно говоря, это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… вопросов ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сСриализации Π½Π° собСсСдованиях ΠΏΠΎ Java. НС Ρ…Ρ€Π°Π½ΠΈΡ‚Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Π² статичСском ΠΏΠΎΠ»Π΅!

  10. И напослСдок, ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ static import. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ со стандартным ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ import, Π½ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π½Π΅Π³ΠΎ позволяСт ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ всС статичСскиС Ρ‡Π»Π΅Π½Ρ‹ класса. ΠŸΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² этом ΠΆΠ΅ классС, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»Π΅ΠΉ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Π±Π΅Π· указания ΠΈΠΌΠ΅Π½ΠΈ класса. Данная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ появилась Π² Java вСрсии 1.5, ΠΈ ΠΏΡ€ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠΌ использовании ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°. НаиболСС часто данная конструкция встрСчаСтся Π² тСстах JUnit, Ρ‚.ΠΊ. ΠΏΠΎΡ‡Ρ‚ΠΈ всС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ тСстов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ static import для assert ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ assertEquals() ΠΈ для ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ². Если Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ понятно – Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ.

На этом всё. ВсС Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π΅ static Π² Java обязан Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ программист. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±Ρ‹Π»Π° рассмотрСна базовая информация ΠΎ статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, полях, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, Π±Π»ΠΎΠΊΠ°Ρ… ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅. Π’ Ρ‚ΠΎΠΌ числС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ свойства, Π·Π½Π°Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ написании ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Java. Π― надСюсь, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ²Π΅Π΄Ρ‘Ρ‚ свои Π½Π°Π²Ρ‹ΠΊΠΈ использования статичСских ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΎΠ² Π΄ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²Π°, Ρ‚.ΠΊ. это ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ для ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎΠ³ΠΎ программирования."
ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ (92)
  • популярныС
  • Π½ΠΎΠ²Ρ‹Π΅
  • старыС
Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ
Anonymous #3346123
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 14
1 апрСля, 08:58
"ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ статичСского класса : public class Vehicle { public static class Car { public int km; } } Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экзСмпляра Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ статичСского класса ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅ значСния Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ: Vehicle.Car car = new Vehicle.Car(); car.km = 90; Для использования статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²/ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…/класса Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса. " А Ρ€Π°Π·Π²Π΅ Vehicle.Car car = new Vehicle.Car(); это Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ?
gypsy potassium
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 13
Expert
30 января, 18:32
ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, этот класс привязан ΠΊ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ классу, ΠΈ Ссли внСшний наслСдуСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ классом, Ρ‚ΠΎ этот Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ наслСдован. Π½Π΅ понятСн смысл прСдлоТСния, слишком ΠΌΠ½ΠΎΠ³ΠΎ "этих" (Π½Ρƒ ΠΊΠ°ΠΊ ΠΈΡ… Ρ‚Π°ΠΌ)
Π•Π²Π³Π΅Π½ΠΈΠΉ N
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 23
17 января, 13:36
"статичСскиС поля Π½Π΅ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ... послС дСсСриализации Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅ (ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅" Π° константы (public final static ) Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ свои значСния?
Going
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 15
Expert
13 ноября 2023, 15:13
НичСго Π½Π΅ понятно, Π½ΠΎ ΠΎΠΎΠΎΡ‡Π΅Π½ΡŒ интСрСсно:)
p90x
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 8
14 апрСля 2023, 21:59
ΠΏΠΎΠΎΡ€Π°Π» "Если Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ понятно – Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ."
Anonymous #3232154
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 37
15 ΠΌΠ°Ρ€Ρ‚Π° 2023, 18:19
" По сути статичСский Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ класса Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ содСрТит ссылку Π½Π° создавший Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ внСшнСго класса. " ΠœΠΎΠΆΠ΅Ρ‚ ΠΊΡ‚ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ простым языком Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚?
Oraz Janov Backend Developer
10 апрСля 2023, 15:24
Для статичСского класса Π½Π΅ Π½Π°Π΄ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ экзСмпляр класса
class ProstoClass {
    static class StaticInnerClass{
        static void sout(){
            System.out.println("Π§Ρ‚ΠΎ-Ρ‚ΠΎ");
        }
    }
}
class Solution {
    public static void main(String[] args) {
        ProstoClass.StaticInnerClass.sout();
    }
}
Π’.Π΅. Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ статичСскому классу Π½Π΅ Π½ΡƒΠΆΠ΅Π½ экзСмпляр класса ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ
ProstoClass prostoClass = new ProstoClass();
Oraz Janov Backend Developer
10 апрСля 2023, 15:29
Pavel Tsygankov
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 28
28 фСвраля 2023, 22:01
"Π’Ρ‹ НЕ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ НЕ статичСским Ρ‡Π»Π΅Π½Π°ΠΌ класса, Π²Π½ΡƒΡ‚Ρ€ΠΈ статичСского контСкста, ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠ°.Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённых ошибок допускаСмых программистами Java, особСнно Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌΠΈ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ main статичный, Π° пСрСмСнная count Π½Π΅Ρ‚, Π² этом случаС ΠΌΠ΅Ρ‚ΠΎΠ΄ println, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° main выбросит β€œCompile time error”." НашСл ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ моя ΠΏΡ€ΠΎΠ³Π° Π½Π΅ компилируСтся Π½ΠΎ Ρ‡Ρ‚ΠΎ с этим Π΄Π΅Π»Π°Ρ‚ΡŒ?? БтатичСским ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс, Π½ΠΎ Ссли Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡˆΠ°Π»ΠΈΡ‚ΡŒ ΠΈ Π²ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ внСшним классом ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ static, всС прСкрасно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚
Andrey Eliseev Java Developer Π² Π‘Π±Π΅Ρ€Π’Π΅Ρ…
24 фСвраля 2023, 13:51
v.kmToMiles(10); Π½Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ статичСскому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΏΡ€ΠΎΡΡŒΠ±Π° ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ)
AлСксандр 52
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 21
17 ноября 2022, 07:57
Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€ΡŽ Π·Π° ΡΡ‚Π°Ρ‚ΡŒΡŽ. МногоС понял. ΠžΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ надСюсь Π΄ΠΎΠ³Π½Π°Ρ‚ΡŒ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ.
MineJavaAcc
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 42
10 сСнтября 2022, 05:46
Π¦ΠΈΡ‚Π°Ρ‚Π°: ------- БтатичСским классом ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, этот класс привязан ΠΊ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ классу, ΠΈ Ссли внСшний наслСдуСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ классом, Ρ‚ΠΎ этот Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ наслСдован. ΠŸΡ€ΠΈ этом Π΄Π°Π½Π½Ρ‹ΠΉ класс ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс. -------- Π’ΠΎ Π΅ΡΡ‚ΡŒ: - этот Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ наслСдован. ΠΈ Ρ‚ΡƒΡ‚ ΠΆΠ΅: - ΠŸΡ€ΠΈ этом Π΄Π°Π½Π½Ρ‹ΠΉ класс ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ, Π’Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ статичСский класс ΠΈΠ»ΠΈ Π½Π΅Ρ‚? Вопрос риторичСский - ΠΎΡ‚Π²Π΅Ρ‚ Π½Π°Π΄ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС.
Anonymous #3062817
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 47
10 сСнтября 2022, 15:23
ΠžΡ‚Π²Π΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ дальшС ΠΏΠΎ курсу (Π° ΠΈΠΌΠ΅Π½Π½ΠΎ здСсь) Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΠΎ Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ, ΠΏΡ€ΠΈ ΠΈΡ… наслСдовании Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ внСшний класс, Ρ‚.Π΅.
public class AnotherClass extends Vehicle.Π‘ar {
}
MineJavaAcc
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 42
10 сСнтября 2022, 15:31
Бпасибо, Π½ΠΎ ΠΏΡ€ΠΎΡ†ΠΈΡ‚ΠΈΡ€ΡƒΡŽ сСбя ΠΆΠ΅ :) .... ΠΎΡ‚Π²Π΅Ρ‚ Π½Π°Π΄ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС.