์•ˆ๋…•! ์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” ๊ฐ์ฒด์™€ ๊ด€๋ จ๋œ ๋งค์šฐ ์ค‘์š”ํ•œ ์ฃผ์ œ๋ฅผ ๊ณ ๋ คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณผ์žฅ ์—†์ด ์‹ค์ƒํ™œ์—์„œ ์ด ์ฃผ์ œ๋ฅผ ๋งค์ผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๋Š” Java ์ƒ์„ฑ์ž์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์šฉ์–ด๋ฅผ ์ฒ˜์Œ ๋“ฃ๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์ด๋ฏธ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ๊นจ๋‹ซ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค :) ์šฐ๋ฆฌ๋Š” ๋‚˜์ค‘์— ์ด๊ฒƒ์„ ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

์„ธ๊ณ„์—์„œ ์ƒ์„ฑ์ž๋Š” ๋ฌด์—‡์ด๋ฉฐ ์™œ ํ•„์š”ํ•œ๊ฐ€์š”?

๋‘ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

public class Car {

   String model;
   int maxSpeed;

   public static void main(String[] args) {

       Car bugatti = new Car();
       bugatti.model = "Bugatti Veyron";
       bugatti.maxSpeed = 378;

   }
}
์šฐ๋ฆฌ๋Š” ์ž๋™์ฐจ๋ฅผ ๋งŒ๋“ค๊ณ  ๋ชจ๋ธ๊ณผ ์ตœ๋Œ€ ์†๋„๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Car ๊ฐœ์ฒด๋Š” ๋ถ„๋ช…ํžˆ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ 2๊ฐœ์˜ ํ•„๋“œ๋ฅผ ๊ฐ–์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 16๊ฐœ์˜ ํ•„๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

public class Car {

   String model;// model
   int maxSpeed;// maximum speed
   int wheels;// wheel width
   double engineVolume;// engine volume
   String color;// color
   int productionYear;// production year
   String ownerFirstName;// first name of owner
   String ownerLastName;// last name of owner
   long price;// price
   boolean isNew;// flag indicating whether car is new
   int seatsInTheCar;// number of seats in the car
   String cabinMaterial;// interior material
   boolean insurance;// flag indicating whether car is insured
   String manufacturerCountry;// manufacturer country
   int trunkVolume;// size of the trunk
   int accelerationTo100km;// how long it takes to accelerate to 100 km/h (in seconds)


   public static void main(String[] args) {
       Car bugatti = new Car();

       bugatti.color = "blue";
       bugatti.accelerationTo100km = 3;
       bugatti.engineVolume = 6.3;
       bugatti.manufacturerCountry = "Italy";
       bugatti.ownerFirstName = "Amigo";
       bugatti.productionYear = 2016;
       bugatti.insurance = true;
       bugatti.price = 2000000;
       bugatti.isNew = false;
       bugatti.seatsInTheCar = 2;
       bugatti.maxSpeed = 378;
       bugatti.model = "Bugatti Veyron";

   }

}
์ƒˆ๋กœ์šด Car ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 16๊ฐœ์˜ ํ•„๋“œ๊ฐ€ ์žˆ์ง€๋งŒ 12๊ฐœ๋งŒ ์ดˆ๊ธฐํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค ! ์ง€๊ธˆ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์žŠ์–ด๋ฒ„๋ฆฐ ํ•„๋“œ๋ฅผ ์ฐพ์œผ์‹ญ์‹œ์˜ค! ์‰ฝ์ง€ ์•Š์ฃ ? ์ด ์ƒํ™ฉ์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์‰ฝ๊ฒŒ ์‹ค์ˆ˜ํ•  ์ˆ˜ ์žˆ๊ณ  ์ผ๋ถ€ ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์ž˜๋ชป ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

public class Car {

   String model;// model
   int maxSpeed;// maximum speed
   int wheels;// wheel width
   double engineVolume;// engine volume
   String color;// color
   int productionYear;// production year
   String ownerFirstName;// first name of owner
   String ownerLastName;// last name of owner
   long price;// price
   boolean isNew;// flag indicating whether car is new
   int seatsInTheCar;// number of seats in the car
   String cabinMaterial;// interior material
   boolean insurance;// flag indicating whether car is insured
   String manufacturerCountry;// manufacturer country
   int trunkVolume;// size of the trunk
   int accelerationTo100km;// how long it takes to accelerate to 100 km/h (in seconds)


   public static void main(String[] args) {
       Car bugatti = new Car();

       bugatti.color = "blue";
       bugatti.accelerationTo100km = 3;
       bugatti.engineVolume = 6.3;
       bugatti.manufacturerCountry = "Italy";
       bugatti.ownerFirstName = "Amigo";
       bugatti.productionYear = 2016;
       bugatti.insurance = true;
       bugatti.price = 2000000;
       bugatti.isNew = false;
       bugatti.seatsInTheCar = 2;
       bugatti.maxSpeed = 378;
       bugatti.model = "Bugatti Veyron";

       System.out.println("Model: Bugatti Veyron. Engine volume: " + bugatti.engineVolume + ". Trunk volume: " + bugatti.trunkVolume + ". Cabin material: " + bugatti.cabinMaterial +
       ". Wheel width: " + bugatti.wheels + ". Purchased in 2018 by Mr. " + bugatti.ownerLastName);

   }

}
์ฝ˜์†” ์ถœ๋ ฅ: ๋ชจ๋ธ: Bugatti Veyron. ์—”์ง„ ๋ณผ๋ฅจ: 6.3. ํŠธ๋ ํฌ ๋ณผ๋ฅจ: 0. ์บ๋นˆ ์žฌ์งˆ: null. ๋ฐ”ํ€ด ๋„ˆ๋น„: 0. 2018๋…„์— Mr. null์ด ๊ตฌ์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค . ์ฐจ๋ฅผ ์‚ฌ๊ธฐ ์œ„ํ•ด 200๋งŒ ๋‹ฌ๋Ÿฌ๋ฅผ ํฌ๊ธฐํ•œ ๊ท€ํ•˜์˜ ๊ตฌ๋งค์ž๋Š” ๋ถ„๋ช…ํžˆ " Mr. null "์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค! ๊ทธ๋Ÿฌ๋‚˜ ์‹ฌ๊ฐํ•˜๊ฒŒ ํ•ต์‹ฌ์€ ์šฐ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐœ์ฒด๋ฅผ ์ž˜๋ชป ์ƒ์„ฑํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํœ  ๋„ˆ๋น„๊ฐ€ 0์ธ ์ž๋™์ฐจ(์ฆ‰, ๋ฐ”ํ€ด๊ฐ€ ์ „ํ˜€ ์—†์Œ), ํŠธ๋ ํฌ๊ฐ€ ๋ˆ„๋ฝ๋จ, ์•Œ ์ˆ˜ ์—†๋Š” ์žฌ๋ฃŒ๋กœ ๋งŒ๋“ค์–ด์ง„ ์บ๋นˆ, ๊ทธ๋ฆฌ๊ณ  ๋ฌด์—‡๋ณด๋‹ค๋„ ์ •์˜๋˜์ง€ ์•Š์€ ์†Œ์œ ์ž . ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ์ค‘์ผ ๋•Œ ๊ทธ๋Ÿฌํ•œ ์‹ค์ˆ˜๊ฐ€ ์–ด๋–ป๊ฒŒ "์‚ฌ๋ผ์งˆ" ์ˆ˜ ์žˆ๋Š”์ง€ ์ƒ์ƒํ•  ์ˆ˜ ์žˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ๋“  ๊ทธ๋Ÿฐ ์ƒํ™ฉ์„ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์„ ์ œํ•œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค: ์ƒˆ ์ž๋™์ฐจ๋ฅผ ๋งŒ๋“ค ๋•Œ๊ฐœ์ฒด, ๋ชจ๋ธ ๋ฐ ์ตœ๋Œ€ ์†๋„์™€ ๊ฐ™์€ ํ•„๋“œ๊ฐ€ ํ•ญ์ƒ ์ง€์ •๋˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฐœ์ฒด ์ƒ์„ฑ์„ ๋ฐฉ์ง€ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋Š” ์ด ์ž‘์—…์„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ด์œ  ๋•Œ๋ฌธ์— ์ด๋ฆ„์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋Š” ๊ฐ๊ฐ์˜ ์ƒˆ ๊ฐœ์ฒด๊ฐ€ ์ผ์น˜ํ•ด์•ผ ํ•˜๋Š” ์ผ์ข…์˜ "๊ณจ๊ฒฉ" ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํŽธ์˜๋ฅผ ์œ„ํ•ด ๋‘ ๊ฐœ์˜ ํ•„๋“œ๊ฐ€ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ ๋ฒ„์ „์˜ Car ํด๋ž˜์Šค ๋กœ ๋Œ์•„๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค . ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•˜๋ฉด Car ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

public Car(String model, int maxSpeed) {
   this.model = model;
   this.maxSpeed = maxSpeed;
}

// And creating an object now looks like this:

public static void main(String[] args) {
   Car bugatti = new Car("Bugatti Veyron", 378);
}
์ƒ์„ฑ์ž๊ฐ€ ์„ ์–ธ๋˜๋Š” ๋ฐฉ์‹์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๋ฐ˜ํ™˜ ์œ ํ˜•์ด ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ƒ์„ฑ์ž๋Š” ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ํด๋ž˜์Šค ์ด๋ฆ„( Car )์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ƒ์„ฑ์ž๋Š” ์ƒˆ๋กœ์šด ํ‚ค์›Œ๋“œ์ธ this ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค . ํ‚ค์›Œ๋“œ this๋Š” ํŠน์ • ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž์˜ ์ฝ”๋“œ

public Car(String model, int maxSpeed) {
   this.model = model;
   this.maxSpeed = maxSpeed;
}
" ์ด ์ž๋™์ฐจ์˜ ๋ชจ๋ธ ( ์ง€๊ธˆ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ๊ฒƒ) ์€ ์ƒ์„ฑ์ž์— ์ „๋‹ฌ๋œ ๋ชจ๋ธ ์ธ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด ์ž๋™์ฐจ(์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ๊ฒƒ)์˜ maxSpeed ๋Š” ๊ฑด์„ค์ž." ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์ผ์–ด๋‚˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค.

public class Car {

   String model;
   int maxSpeed;

   public Car(String model, int maxSpeed) {
       this.model = model;
       this.maxSpeed = maxSpeed;
   }

   public static void main(String[] args) {
       Car bugatti = new Car("Bugatti Veyron", 378);
       System.out.println(bugatti.model);
       System.out.println(bugatti.maxSpeed);
   }

}
์ฝ˜์†” ์ถœ๋ ฅ: Bugatti Veyron 378 ์ƒ์„ฑ์ž๊ฐ€ ํ•„์š”ํ•œ ๊ฐ’์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ• ๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๊ฐ€ ์ผ๋ฐ˜ ๋ฉ”์†Œ๋“œ์™€ ๋งค์šฐ ์œ ์‚ฌํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ˆˆ์น˜์ฑ„์…จ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค! ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋Š” ์‹ค์ œ๋กœ ๋ฉ”์„œ๋“œ์ด์ง€๋งŒ ํŠน์ • ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค :) ๋ฉ”์„œ๋“œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ƒ์„ฑ์ž์— ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

public class Car {

   String model;
   int maxSpeed;

   public Car(String model, int maxSpeed) {
       this.model = model;
       this.maxSpeed = maxSpeed;
   }

   public static void main(String[] args) {
       Car bugatti = new Car(); // Error!
   }
  
}
์ƒ์„ฑ์ž๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ๋‹ฌ์„ฑํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ๊ฒƒ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์†๋„๋‚˜ ๋ชจ๋ธ ์—†์ด๋Š” ์ž๋™์ฐจ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค! ์ƒ์„ฑ์ž์™€ ๋ฉ”์„œ๋“œ์˜ ์œ ์‚ฌ์„ฑ์€ ์—ฌ๊ธฐ์„œ ๋๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ƒ์„ฑ์ž๋„ ์˜ค๋ฒ„๋กœ๋“œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง‘์— ๊ณ ์–‘์ด ๋‘ ๋งˆ๋ฆฌ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์„ธ์š”. ๋‹น์‹ ์€ ๊ทธ๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ์ƒˆ๋ผ ๊ณ ์–‘์ด๋กœ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ๋ฒˆ์งธ๋Š” ์ด๋ฏธ ๋‹ค ์ž๋ž€ ์ƒํƒœ์—์„œ ๊ธธ๊ฑฐ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ธ๋ฐ ์ •ํ™•ํžˆ ๋ช‡ ์‚ด์ธ์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์šฐ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์ด๋ฆ„๊ณผ ๋‚˜์ด๊ฐ€ ์žˆ๋Š” ๊ณ ์–‘์ด(์ฒซ ๋ฒˆ์งธ ๊ณ ์–‘์ด)์™€ ์ด๋ฆ„๋งŒ ์žˆ๋Š” ๊ณ ์–‘์ด(๋‘ ๋ฒˆ์งธ ๊ณ ์–‘์ด)์˜ ๋‘ ์ข…๋ฅ˜์˜ ๊ณ ์–‘์ด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์ƒ์„ฑ์ž๋ฅผ ์˜ค๋ฒ„๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

public class Cat {

   String name;
   int age;

   // For the first cat
   public Cat(String name, int age) {
       this.name = name;
       this.age = age;
   }

   // For the second cat
   public Cat(String name) {
       this.name = name;
   }

   public static void main(String[] args) {

       Cat smudge = new Cat("Smudge", 5);
       Cat streetCatNamedBob = new Cat("Bob");
   }

}
"name" ๋ฐ "age" ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์›๋ž˜ ์ƒ์„ฑ์ž ์™ธ์— ์ด๋ฆ„ ๋งค๊ฐœ๋ณ€์ˆ˜๋งŒ ์žˆ๋Š” ์ƒ์„ฑ์ž๋ฅผ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ์ˆ˜์—…์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋กœ๋“œํ•œ ๊ฒƒ๊ณผ ์ •ํ™•ํžˆ ๊ฐ™์€ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด์ œ ๋‘ ์ข…๋ฅ˜์˜ ๊ณ ์–‘์ด๋ฅผ ๋ชจ๋‘ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :)
์ƒ์„ฑ์ž๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?  - 2
์ˆ˜์—… ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ ๋‹น์‹ ์ด ๊นจ๋‹ซ์ง€ ๋ชปํ•œ ์ฑ„ ์ด๋ฏธ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๊ณ  ๋งํ–ˆ๋˜ ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์‹ญ๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋งํ•œ ๊ฒƒ์„ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค Java์˜ ๋ชจ๋“  ํด๋ž˜์Šค์—๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ผ๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ๋ชจ๋“  ํด๋ž˜์Šค์˜ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

public class Cat {

   public static void main(String[] args) {

       Cat smudge = new Cat(); // The default constructor is invoked here
   }
}
์–ธ๋œป ๋ณด๋ฉด ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์—์„œ ์ƒ์„ฑ์ž๋Š” ์–ด๋””์—์„œ ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด Cat ํด๋ž˜์Šค ์— ๋Œ€ํ•œ ๋นˆ ์ƒ์„ฑ์ž๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค . ๊ทธ ์•ˆ์— ๋ช‡ ๊ฐ€์ง€ ๋ฌธ๊ตฌ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

public class Cat {

   public Cat() {
       System.out.println("A cat has been created!");
   }

   public static void main(String[] args) {

       Cat smudge = new Cat(); // The default constructor is invoked here
   }
}
์ฝ˜์†” ์ถœ๋ ฅ: ๊ณ ์–‘์ด๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ํ™•์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค! ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋Š” ํ•ญ์ƒ ํด๋ž˜์Šค์— ๋ณด์ด์ง€ ์•Š๊ฒŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ํ•œ ๊ฐ€์ง€ ๋” ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ์ž๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ํด๋ž˜์Šค์—์„œ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ์šฐ๋ฆฌ๋Š” ์œ„์—์„œ ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ฆ๊ฑฐ๋ฅผ ์ด๋ฏธ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

public class Cat {

   String name;
   int age;

   public Cat(String name, int age) {
       this.name = name;
       this.age = age;
   }

   public static void main(String[] args) {

       Cat smudge = new Cat(); //Error!
   }
}
๋ฌธ์ž์—ด ๊ณผ int ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ Cat ์ƒ์„ฑ์ž๋ฅผ ์„ ์–ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฆ„๊ณผ ๋‚˜์ด ์—†์ด Cat์„ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค . ์ด๋กœ ์ธํ•ด ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ํด๋ž˜์Šค์—์„œ ์ฆ‰์‹œ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ธ์ˆ˜๊ฐ€ ์—†๋Š” ์ƒ์„ฑ์ž๋ฅผ ํฌํ•จํ•˜์—ฌ ํด๋ž˜์Šค์— ์—ฌ๋Ÿฌ ์ƒ์„ฑ์ž๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ณ„๋„๋กœ ์„ ์–ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋™๋ฌผ ๋ณ‘์›์„ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ €ํฌ ๋ณ‘์›์€ ์„ ํ–‰์„ ํ•˜์—ฌ ์ด๋ฆ„๊ณผ ๋‚˜์ด๋ฅผ ์•Œ ์ˆ˜ ์—†๋Š” ๋…ธ์ˆ™์ž ์ƒˆ๋ผ ๊ณ ์–‘์ด๋ฅผ ๋•๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

public class Cat {

   String name;
   int age;

   // For cats with owners
   public Cat(String name, int age) {
       this.name = name;
       this.age = age;
   }

   // For street cats
   public Cat() {
   }

   public static void main(String[] args) {

       Cat smudge = new Cat("Smudge", 5);
       Cat streetCat = new Cat();
   }
}
์ด์ œ ๋ช…์‹œ์ ์ธ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์ž‘์„ฑํ–ˆ์œผ๋ฏ€๋กœ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ๊ณ ์–‘์ด๋ฅผ ๋ชจ๋‘ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :) ๋ชจ๋“  ๋ฉ”์„œ๋“œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ƒ์„ฑ์ž์— ์ „๋‹ฌ๋˜๋Š” ์ธ์ˆ˜์˜ ์ˆœ์„œ๋Š” ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž์—์„œ name ์ธ์ˆ˜ ์™€ age ์ธ์ˆ˜๋ฅผ ๋ฐ”๊พธ๊ฒ ์Šต๋‹ˆ๋‹ค .

public class Cat {

   String name;
   int age;

   public Cat(int age, String name) {
       this.name = name;
       this.age = age;
   }

   public static void main(String[] args) {

       Cat smudge = new Cat("Smudge", 10); // Error!
   }
}
์˜ค๋ฅ˜! ์ƒ์„ฑ์ž๋Š” Cat ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ˆซ์ž์™€ ๋ฌธ์ž์—ด์„ ์ด ์ˆœ์„œ๋Œ€๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ๊ทœ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ ์ฝ”๋“œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๊ธฐ์–ตํ•˜๊ณ  ์ž์‹ ์˜ ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•  ๋•Œ ์—ผ๋‘์— ๋‘์‹ญ์‹œ์˜ค.

public Cat(String name, int age) {
   this.name = name;
   this.age = age;
}

public Cat(int age, String name) {
   this.age = age;
   this.name = name;
}
์ด๋“ค์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋‘ ์ƒ์„ฑ์ž์ž…๋‹ˆ๋‹ค! "์™œ ์ƒ์„ฑ์ž๊ฐ€ ํ•„์š”ํ•œ๊ฐ€์š”?"๋ผ๋Š” ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์„ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค๋ฉด "๊ฐ์ฒด๊ฐ€ ํ•ญ์ƒ ์œ ํšจํ•œ ์ƒํƒœ๋ฅผ ๊ฐ–๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด"๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ๋ณ€์ˆ˜๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์—๋Š” ์†๋„๊ฐ€ 0์ธ ์ž๋™์ฐจ๋‚˜ ๊ธฐํƒ€ "์œ ํšจํ•˜์ง€ ์•Š์€" ๊ฐœ์ฒด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ์ฃผ์š” ์ด์ ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•„๋“œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๋ฉด(๊ฐœ์ฒด๋ฅผ ๋งŒ๋“  ํ›„) ๋ฌด์–ธ๊ฐ€๋ฅผ ๋†“์น˜๊ณ  ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ธธ ์œ„ํ—˜์ด ํฝ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์ƒ์„ฑ์ž์—์„œ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๋ชจ๋“  ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ์œ ํ˜•์˜ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ฆ‰์‹œ ์˜ค๋ฅ˜๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๋‹น์‹ ์ด ๋‹น์‹ ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋„ฃ์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค๊ณ  ๋ณ„๋„๋กœ ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.' ์ƒ์„ฑ์ž ๋‚ด๋ถ€์˜ ๋…ผ๋ฆฌ. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ๋Š” ํ•„์š”ํ•œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ •์˜ํ•ด์•ผ ํ•˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž์— ๋…ผ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์œ ์ƒ๊ฐ์ธ ์ด์œ ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

public class CarFactory {

   String name;
   int age;
   int carsCount;

   public CarFactory(String name, int age, int carsCount) {
   this.name = name;
   this.age = age;
   this.carsCount = carsCount;

   System.out.println("Our car factory is called " + this.name);
   System.out.println("It was founded " + this.age + " years ago" );
   System.out.println("Since that time, it has produced " + this.carsCount +  " cars");
   System.out.println("On average, it produces " + (this.carsCount/this.age) + " cars per year");
}

   public static void main(String[] args) {

       CarFactory ford = new CarFactory("Ford", 115 , 50000000);
   }
}
์ž๋™์ฐจ ๊ณต์žฅ์„ ์„ค๋ช…ํ•˜๋Š” CarFactory ํด๋ž˜์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค . ์ƒ์„ฑ์ž ๋‚ด๋ถ€์—์„œ ๋ชจ๋“  ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์ผ๋ถ€ ๋…ผ๋ฆฌ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๊ณต์žฅ์— ๋Œ€ํ•œ ์ผ๋ถ€ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ์ •๋„๋ฉด ๋‚˜์  ๊ฑด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ฝ˜์†” ์ถœ๋ ฅ: ์šฐ๋ฆฌ ์ž๋™์ฐจ ๊ณต์žฅ์€ Ford๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์„ค๋ฆฝ๋œ ์ง€ 115๋…„์ด ๋œ ์ด๋ž˜ ์ง€๊ธˆ๊นŒ์ง€ 5000๋งŒ ๋Œ€์˜ ์ž๋™์ฐจ๋ฅผ ์ƒ์‚ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ‰๊ท ์ ์œผ๋กœ ์—ฐ๊ฐ„ 434782๋Œ€์˜ ์ž๋™์ฐจ๋ฅผ ์ƒ์‚ฐํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ์‹œ๊ฐ„ ์ง€์—ฐ ๊ด‘์‚ฐ์„ ๊น”์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์ฝ”๋“œ๋Š” ๋งค์šฐ ์‰ฝ๊ฒŒ ์˜ค๋ฅ˜๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” Ford๊ฐ€ ์•„๋‹ˆ๋ผ 1๋…„ ๋ฏธ๋งŒ ๋™์•ˆ ์กด์žฌํ•˜๊ณ  1000๋Œ€์˜ ์ž๋™์ฐจ๋ฅผ ์ƒ์‚ฐํ•œ "Amigo Motors"๋ผ๋Š” ์ƒˆ๋กœ์šด ๊ณต์žฅ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

public class CarFactory {

   String name;
   int age;
   int carsCount;

   public CarFactory(String name, int age, int carsCount) {
   this.name = name;
   this.age = age;
   this.carsCount = carsCount;

   System.out.println("Our car factor is called " + this.name);
   System.out.println("It was founded " + this.age + " years ago" );
   System.out.println("Since that time, it has produced " + this.carsCount +  " cars");
   System.out.println("On average, it produces " + (this.carsCount/this.age) + " cars per year");
}


   public static void main(String[] args) {

       CarFactory ford = new CarFactory("Amigo Motors", 0 , 1000);
   }
}
์ฝ˜์†” ์ถœ๋ ฅ: ์šฐ๋ฆฌ ์ž๋™์ฐจ ๊ณต์žฅ์€ "main" ์Šค๋ ˆ๋“œ์—์„œ Amigo Motors ์˜ˆ์™ธ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. java.lang.ArithmeticException: / by zero ์„ค๋ฆฝ๋œ ์ง€ 0๋…„์ด ์ง€๋‚œ ์ง€๊ธˆ๊นŒ์ง€ CarFactory์—์„œ 1000๋Œ€์˜ ์ž๋™์ฐจ๋ฅผ ์ƒ์‚ฐํ–ˆ์Šต๋‹ˆ๋‹ค . (CarFactory.java:15) at CarFactory.main(CarFactory.java:23) ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ ์ฝ”๋“œ 1๋กœ ์ข…๋ฃŒ๋จ ํŒ”! ํ”„๋กœ๊ทธ๋žจ์€ ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ดํ•ดํ•  ์ˆ˜ ์—†๋Š” ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ๋๋‚ฉ๋‹ˆ๋‹ค. ์›์ธ์„ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฌธ์ œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ƒ์„ฑ์ž์— ๋„ฃ์€ ๋…ผ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด๋‹ค ๊ตฌ์ฒด์ ์œผ๋กœ ๋‹ค์Œ ์ค„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

System.out.println("On average, it produces " + (this.carsCount/this.age) + " cars per year");
์—ฌ๊ธฐ์—์„œ๋Š” ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ƒ์‚ฐ๋œ ์ž๋™์ฐจ ์ˆ˜๋ฅผ ๊ณต์žฅ ์—ฐ์‹์œผ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ ๊ณต์žฅ์€ ์ƒˆ ๊ณต์žฅ์ด๊ธฐ ๋•Œ๋ฌธ์—(์ฆ‰, 0๋…„์ด ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—) ์ˆ˜ํ•™์—์„œ๋Š” ํ•  ์ˆ˜ ์—†๋Š” 0์œผ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์€ ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ฌด์—‡์„ ํ–ˆ์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  ๋…ผ๋ฆฌ๋ฅผ ๋ณ„๋„์˜ ๋ฉ”์„œ๋“œ์— ๋„ฃ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ printFactoryInfo() ๋ผ๊ณ  ๋ถ€๋ฅด์ž . CarFactory ๊ฐ์ฒด๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . ๊ฑฐ๊ธฐ์— ๋ชจ๋“  ๋…ผ๋ฆฌ๋ฅผ ๋ฐฐ์น˜ํ•˜๊ณ  ๋™์‹œ์— ์ž ์žฌ์ ์ธ ์˜ค๋ฅ˜(์˜ˆ: 0๋…„ ๊ด€๋ จ ์˜ค๋ฅ˜)๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์ž์—๊ฒŒ. ์œ ํšจํ•œ ๊ฐœ์ฒด ์ƒํƒœ๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด ์ƒ์„ฑ์ž๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋ฅผ ๋‹ค๋ฅธ ๊ฒƒ๊ณผ ์„ž์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋ฐฐ์šด ๋‚ด์šฉ์„ ๋ณด๊ฐ•ํ•˜๋ ค๋ฉด Java ๊ณผ์ •์—์„œ ๋น„๋””์˜ค ๊ฐ•์˜๋ฅผ ์‹œ์ฒญํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.