JavaRush/ΠšΡƒΡ€ΡΡ‹/ΠœΠΎΠ΄ΡƒΠ»ΡŒ 2. Java Core/ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ классов

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ классов

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°

β€” ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Амиго! Π‘Π»Ρ‹ΡˆΠ°Π»Π°, Риша рассказал Ρ‚Π΅Π±Π΅ Π½ΠΎΠ²ΡƒΡŽ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ?!

β€” Π”Π°, Ким.

β€” Моя Ρ‚Π΅ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ интСрСсной. Π― Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π΅Π±Π΅ ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ классов.

ΠšΠ»Π°ΡΡΡ‹ Π² Java – это Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° дискС, содСрТащиС Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ – скомпилированный Java-ΠΊΠΎΠ΄.

β€” Π”Π°, я помню.

β€” Java-машина Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈΡ… Π±Π΅Π· нСобходимости. ΠšΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³Π΄Π΅-Ρ‚ΠΎ Π² ΠΊΠΎΠ΄Π΅ происходит ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ классу, Java-машина провСряСт – Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ Π»ΠΈ ΠΎΠ½. И Ссли Π½Π΅Ρ‚, Ρ‚ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ класса – это присваиваниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ всСх Π΅Π³ΠΎ статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Π·ΠΎΠ² всСх статичСских Π±Π»ΠΎΠΊΠΎΠ².

β€” ΠŸΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Π²Ρ‹Π·ΠΎΠ² конструктора Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. А Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ статичСский Π±Π»ΠΎΠΊ?

β€” Если для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ слоТный ΠΊΠΎΠ΄ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°), ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π² конструкторС. БтатичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΊΠΎΠΉ возмоТности Π»ΠΈΡˆΠ΅Π½Ρ‹. Но Ρ‚.ΠΊ. ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² этом ΠΎΡΡ‚Π°Π»Π°ΡΡŒ, Π² классы ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ статичСский Π±Π»ΠΎΠΊ ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎ сути своСй эквивалСнтны Π²Ρ‹Π·ΠΎΠ²Ρƒ статичСских конструкторов.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это выглядит:

Код Π§Ρ‚ΠΎ происходит Π½Π° самом Π΄Π΅Π»Π΅
class Cat
{
public static int catCount = 0 ;
public static String namePrefix;

static
{
Properties p = new Properties();
p.loadFromFile("cat.properties");
namePrefix = p.get("name-prefix");
}

public static int maxCatCount = 50;

static
{
Properties p = new Properties();
p.loadFromFile("max.properties");
if (p.get("cat-max") != null)
maxCatCount = p.getInt("cat-max");
}

}
class Cat
{
public static int catCount;
public static String namePrefix;
public static int maxCatCount;

//статичСскиС конструкторы Π² Java
//Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Ρ‹, Π½ΠΎ Ссли Π±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ, Ρ‚ΠΎ всС
//выглядСло Π±Ρ‹ Ρ‚Π°ΠΊ
public static Cat()
{
catCount = 0;

Properties p = new Properties();
p.loadFromFile("cat.properties");
namePrefix = p.get("name-prefix");

maxCatCount = 50;

Properties p2 = new Properties();
p2.loadFromFile("max.properties");
if (p2.get("cat-max")!=null)
maxCatCount = p2.getInt("cat-max");
}
}

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ конструктора. Π― Π΄Π°ΠΆΠ΅ Π·Π°ΠΏΠΈΡΠ°Π»Π° это Π² Π²ΠΈΠ΄Π΅ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ статичСского конструктора.

β€” Π”Π°, я всС понял.

β€” ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ (6)
  • популярныС
  • Π½ΠΎΠ²Ρ‹Π΅
  • старыС
Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ
Руслан
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 48
30 сСнтября 2025, 13:47
πŸ”Ή ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠšΠ»Π°ΡΡΡ‹ Π»Π΅ΠΆΠ°Ρ‚ Π½Π° дискС ΠΊΠ°ΠΊ .class ΠΈ JVM Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈΡ… Π·Π°Ρ€Π°Π½Π΅Π΅. Класс загруТаСтся Π»Π΅Π½ΠΈΠ²ΠΎ β€” ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π½Π΅ΠΌΡƒ: β€’ созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (new), β€’ доступ ΠΊ статичСскому полю ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, β€’ Ρ‡Π΅Ρ€Π΅Π· Reflection. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ класса выполняСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ: β€’ всСм static полям ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (0, false, null), β€’ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ присваивания ΠΏΡ€ΠΈ объявлСнии (static int x = 5;), β€’ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ всС static { … } Π±Π»ΠΎΠΊΠΈ свСрху Π²Π½ΠΈΠ·. БтатичСскиС Π±Π»ΠΎΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ для static ΠΏΠΎΠ»Π΅ΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ· Ρ„Π°ΠΉΠ»Π°), Ρ‚.ΠΊ. ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ конструктор ΠΊ Π½ΠΈΠΌ Π½Π΅ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ Π²Π°ΠΆΠ΅Π½: всС static поля ΠΈ Π±Π»ΠΎΠΊΠΈ родитСля ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π΄ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ бСзопасно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…. JVM ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ класс, статичСскиС поля ΠΈ Π±Π»ΠΎΠΊΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ. πŸ”Ή ΠŸΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ β€’ ЗначСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΅Ρ‰Ρ‘ Π΄ΠΎ выполнСния присваивания ΠΏΡ€ΠΈ объявлСнии ΠΈ static-Π±Π»ΠΎΠΊΠΎΠ². β€’ БтатичСскиС Π±Π»ΠΎΠΊΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² порядкС появлСния Π² ΠΊΠΎΠ΄Π΅ свСрху Π²Π½ΠΈΠ·. β€’ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ static полю Π΄ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΈΡ‚ Π΅Π³ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. β€’ Π’ Java Π½Π΅Ρ‚ статичСских конструкторов, Π½ΠΎ static-Π±Π»ΠΎΠΊΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ. Π’ΠΎΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΡƒ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚
rwnmei Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚
11 ΠΌΠ°Ρ€Ρ‚Π° 2025, 14:08
Как я понял статичСскиС Π±Π»ΠΎΠΊΠΈ это ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… класса ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ³Π΄Π° JVM Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ класс ΠΎΠ½ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ статичСский Π±Π»ΠΎΠΊ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ статичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ дСлаСтся это всСго Ρ€Π°Π· Π·Π° всю Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² классС ΠΎΡ‚Π»ΠΈΡ‡Π°ΠΉ ΠΎΡ‚ слоТной ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ простой
static int maxSpeed; //простая инициализаця
static{
    if(maxSpeed > 190){
        System.out.println("Π’Ρ‹ ΠΏΠΎΡ‡Ρ‚ΠΈ достигли максимальной скорости"); //слоТная инициализация
    }
}
БлоТная инициализация Π½ΡƒΠΆΠ½Π° Ρ‚ΠΎΠ³Π΄Π° ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ нСльзя ΡƒΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ строку Π»ΠΈΠ±ΠΎ ΠΎΠ½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большСй Π»ΠΎΠ³ΠΈΠΊΠΈ
ПавСл
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 19
Expert
12 октября 2023, 16:04
ΠžΡ‚ΠΊΡƒΠ΄Π° взялся класс Properties? Π’ Java Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ java.base, Π½ΠΎ Ρƒ этого класса Π½Π΅ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° loadFromFile() ΠΈΠ»ΠΈ get(). Амиго сказал "Π”Π°, я всС понял". А понял ΠΎΠ½ Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΎΠ±ΠΌΠ°Π½ΡƒΠ»ΠΈ?
Misha Saharin
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 111
Expert
2 ΠΌΠ°Ρ€Ρ‚Π° 2023, 09:21
Greg
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 108
Expert
4 октября 2022, 12:42
Π¨ΠΎΡ‚ΠΎ расплывчасто ΠΊΠ°ΠΊ-Ρ‚ΠΎ....
11 мая 2022, 00:48
НазваниС Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈ Π΅Π΅ содСрТаниС, ΠΏΠΎ-ΠΌΠΎΠ΅ΠΌΡƒ, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ