โ˜•Java

[Java ์ดํ•ดํ•˜๊ธฐ] 16. Java์˜ ์ƒ์„ฑ์ž

Luvbit 2024. 5. 27. 11:31


 

 

๐Ÿค Java์˜ ์ƒ์„ฑ์ž๋ž€?

์ž๋ฐ”์˜ ์ƒ์„ฑ์ž(constructor)๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ํŠน๋ณ„ํ•œ ๋ฉ”์„œ๋“œ๋กœ,
๊ฐ์ฒด์˜ ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ƒ์„ฑ์ž๋Š” ํด๋ž˜์Šค ์ด๋ฆ„๊ณผ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง€๋ฉฐ ๋ฐ˜ํ™˜ ํƒ€์ž…์ด ์—†์Šต๋‹ˆ๋‹ค
์ƒ์„ฑ์ž๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

๐Ÿฉท์ƒ์„ฑ์ž์˜ ํŠน์ง•

 

 

1. ํด๋ž˜์Šค ์ด๋ฆ„๊ณผ ๋™์ผ

  • ์ƒ์„ฑ์ž๋Š” ํด๋ž˜์Šค ์ด๋ฆ„๊ณผ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  • ๋ฐ˜ํ™˜ ํƒ€์ž…์ด ์—†์œผ๋ฉฐ, void๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Calculator๋ผ๋Š” ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋Š” public Calculator() {  } ํ˜•ํƒœ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

2. ๊ฐ์ฒด ์ดˆ๊ธฐํ™”

  • ์ƒ์„ฑ์ž๋Š” ๊ฐ์ฒด์˜ ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ฑฐ๋‚˜ ์ดˆ๊ธฐ ์„ค์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ์‹คํ–‰๋˜๋ฏ€๋กœ, ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•œ ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์‚ฌ์šฉ์ž์˜ ํŽธ์˜์— ๋”ฐ๋ผ ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ์˜ค๋ฒ„๋กœ๋”ฉ ๊ฐ€๋Šฅ

  • ์ƒ์„ฑ์ž๋Š” ์˜ค๋ฒ„๋กœ๋”ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฆ‰, ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์ด ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ์ƒ์„ฑ์ž๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4 ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ( =default constructor )

  • ํด๋ž˜์Šค์— ๋ช…์‹œ์ ์œผ๋กœ ์ƒ์„ฑ์ž๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์œผ๋ฉด, 
  • ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋ช…์‹œ์ ์œผ๋กœ ์ƒ์„ฑ์ž๋ฅผ ํ•˜๋‚˜๋ผ๋„ ์ •์˜ํ•˜๋ฉด, ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

5.  this๋ฅผ ์‚ฌ์šฉํ•œ ์ƒ์„ฑ์ž ํ˜ธ์ถœ

  • ์ƒ์„ฑ์ž ๋‚ด๋ถ€์—์„œ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ this ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ณ  ์ดˆ๊ธฐํ™” ๋กœ์ง์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ this๋Š” ์ถ”ํ›„ ํฌ์ŠคํŒ…์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

๐Ÿงก์ƒ์„ฑ์ž์˜ ์žฅ์ 

1. ๊ฐ์ฒด ์ดˆ๊ธฐํ™”์˜ ์ผ๊ด€์„ฑ:
์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ํ•„์š”ํ•œ ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ์ผ๊ด€๋˜๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ:
์ƒ์„ฑ์ž ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ this ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ์ƒ์„ฑ์ž ํ˜ธ์ถœ์„ ํ†ตํ•ด ์ดˆ๊ธฐํ™” ๋กœ์ง์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Š” ์ฝ”๋“œ ์ค‘๋ณต์„ ์ค„์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

3. ๊ฐ์ฒด ์ƒ์„ฑ์˜ ํŽธ๋ฆฌํ•จ:
์ƒ์„ฑ์ž๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด์„œ ๋™์‹œ์— ํ•„์š”ํ•œ ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ,
๊ฐ์ฒด ์ƒ์„ฑ์„ ๋” ๊ฐ„ํŽธํ•˜๊ณ  ์ง๊ด€์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 


ํŠน์ง•๋ณ„ ์˜ˆ์ œ๋กœ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์˜ˆ์ œ 1 ) ํด๋ž˜์Šค ์ด๋ฆ„๊ณผ ๋™์ผ

public class Example {
    private int value;

    // ์ƒ์„ฑ์ž - ํด๋ž˜์Šค ์ด๋ฆ„๊ณผ ๋™์ผํ•˜๋ฉฐ ๋ฐ˜ํ™˜ ํƒ€์ž…์ด ์—†์Œ
    public Example(int value) {
        this.value = value;
    }

    public void displayValue() {
        System.out.println("Value: " + value);
    }

    public static void main(String[] args) {
        Example ex = new Example(10); // ์ƒ์„ฑ์ž ํ˜ธ์ถœ
        ex.displayValue(); // Value: 10 ์ถœ๋ ฅ
    }
}

 

 

 

 

์˜ˆ์ œ 2 ) ๊ฐ์ฒด ์ดˆ๊ธฐํ™”

public class Person {
    private String name;
    private int age;

    // ์ƒ์„ฑ์ž - ๊ฐ์ฒด ์ดˆ๊ธฐํ™”
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void displayInfo() {
        System.out.println("Name: " + name + ", Age: " + age);
    }

    public static void main(String[] args) {
        Person person = new Person("pipi", 5); // ์ƒ์„ฑ์ž ํ˜ธ์ถœ
        person.displayInfo(); // Name: pipi, Age: 5 ์ถœ๋ ฅ
    }
}

 

 

 

์˜ˆ์ œ 3 ) ์˜ค๋ฒ„๋กœ๋”ฉ ๊ฐ€๋Šฅ

public class Rectangle {
    private int width;
    private int height;

    // ๊ธฐ๋ณธ ์ƒ์„ฑ์ž
    public Rectangle() {
        this.width = 0;
        this.height = 0;
    }

    // ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์ƒ์„ฑ์ž
    public Rectangle(int width, int height) {
        this.width = width;
        this.height = height;
    }

    public void displayDimensions() {
        System.out.println("Width: " + width + ", Height: " + height);
    }

    public static void main(String[] args) {
        Rectangle rect1 = new Rectangle(); // ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ํ˜ธ์ถœ
        rect1.displayDimensions(); // Width: 0, Height: 0 ์ถœ๋ ฅ

        Rectangle rect2 = new Rectangle(10, 20); // ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์ƒ์„ฑ์ž ํ˜ธ์ถœ
        rect2.displayDimensions(); // Width: 10, Height: 20 ์ถœ๋ ฅ
    }
}

 

 

 

์˜ˆ์ œ 4 ) ๊ธฐ๋ณธ ์ƒ์„ฑ์ž

public class Animal {
    private String type;

    // ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์ž๋™์œผ๋กœ ์ œ๊ณต๋จ
    public Animal() {
        this.type = "Unknown";
    }

    public void displayType() {
        System.out.println("Type: " + type);
    }

    public static void main(String[] args) {
        Animal animal = new Animal(); // ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ํ˜ธ์ถœ
        animal.displayType(); // Type: Unknown ์ถœ๋ ฅ
    }
}

 

 

 

์˜ˆ์ œ 5 ) this๋ฅผ ์‚ฌ์šฉํ•œ ์ƒ์„ฑ์ž ํ˜ธ์ถœ

public class Car {
    private String model;

    // ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์ƒ์„ฑ์ž
    public Car(String model) {
        this.model = model;
    }

    // ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜
    public Car() {
        this.model = "Unknown";
    }

    public void displayModel() {
        System.out.println("Model: " + model);
    }

    public static void main(String[] args) {
        Car car1 = new Car("Tesla"); // ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์ƒ์„ฑ์ž ํ˜ธ์ถœ
        car1.displayModel(); // Model: Tesla ์ถœ๋ ฅ

        Car car2 = new Car(); // ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ํ˜ธ์ถœ
        car2.displayModel(); // Model: Unknown ์ถœ๋ ฅ
    }
}

 

 

 

 

์ƒ์„ฑ์ž๋Š” ๊ฐ์ฒด์˜ ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ์„ค์ •ํ•˜๋Š”๋ฐ ๋งค์šฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์ผ๊ด€์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์งˆ๋ฌธ์€ ์–ธ์ œ๋“ ์ง€ ๋Œ“๊ธ€์— ๋‚จ๊ฒจ์ฃผ์„ธ์š”.
๐Ÿฉต๐Ÿฐ๐Ÿฉต