Responsive Advertisement

Java Classes and Objects: ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ๋ชจ๋“  ๊ฒƒ

ํด๋ž˜์Šค(Class)์™€ ๊ฐ์ฒด(Object)๋Š” Java์˜ ํ•ต์‹ฌ ๊ฐœ๋…์œผ๋กœ, ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP)์˜ ๊ธฐ๋ณธ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์‹ค ์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ์„ ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ์ฒด๋Š” ์ด๋Ÿฌํ•œ ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ๊ฐœ๋…, ๊ตฌํ˜„ ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ํ™œ์šฉ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ์ดˆ๋ฅผ ๋‹ค์ ธ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. ํด๋ž˜์Šค๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ฒญ์‚ฌ์ง„(Template)์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ(Attributes)๊ณผ ๋™์ž‘(Behavior)์„ ์ •์˜ํ•˜๋ฉฐ, ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ

class ClassName {
    // ์†์„ฑ (ํ•„๋“œ)
    ๋ฐ์ดํ„ฐํƒ€์ž… ๋ณ€์ˆ˜๋ช…;

    // ๋™์ž‘ (๋ฉ”์„œ๋“œ)
    ๋ฐ˜ํ™˜ํƒ€์ž… ๋ฉ”์„œ๋“œ๋ช…() {
        // ๋ฉ”์„œ๋“œ ๋‚ด์šฉ
    }
}

2. ๊ฐ์ฒด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

๊ฐ์ฒด๋Š” ํด๋ž˜์Šค์—์„œ ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค(Instance)๋กœ, ํด๋ž˜์Šค์— ์ •์˜๋œ ์†์„ฑ๊ณผ ๋™์ž‘์„ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Car๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฌ๋Ÿฌ ๋Œ€์˜ ์ž๋™์ฐจ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์ฒด ์ƒ์„ฑ

ClassName objectName = new ClassName();

์œ„ ์ฝ”๋“œ์—์„œ new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ์ด ๊ฐ์ฒด๋Š” ํด๋ž˜์Šค์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ์˜ˆ์ œ

๋‹ค์Œ์€ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

์˜ˆ์ œ: ์ž๋™์ฐจ ํด๋ž˜์Šค

class Car {
    // ์†์„ฑ
    String brand;
    int speed;

    // ๋™์ž‘
    public void drive() {
        System.out.println(brand + "๊ฐ€ " + speed + "km/h๋กœ ๋‹ฌ๋ฆฝ๋‹ˆ๋‹ค.");
    }
}

public class Main {
    public static void main(String[] args) {
        // ๊ฐ์ฒด ์ƒ์„ฑ
        Car myCar = new Car();
        myCar.brand = "Tesla";
        myCar.speed = 150;
        myCar.drive();
    }
}

์ถœ๋ ฅ ๊ฒฐ๊ณผ:

Tesla๊ฐ€ 150km/h๋กœ ๋‹ฌ๋ฆฝ๋‹ˆ๋‹ค.

์œ„ ์ฝ”๋“œ์—์„œ Car ํด๋ž˜์Šค๋Š” brand์™€ speed ์†์„ฑ์„ ์ •์˜ํ•˜๋ฉฐ, drive ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

4. ํด๋ž˜์Šค์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ

4.1 ํ•„๋“œ (Fields)

ํ•„๋“œ๋Š” ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜๋กœ, ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋ฉ๋‹ˆ๋‹ค.

class Person {
    String name;
    int age;
}

4.2 ๋ฉ”์„œ๋“œ (Methods)

๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด๊ฐ€ ์ˆ˜ํ–‰ํ•  ๋™์ž‘์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ํด๋ž˜์Šค ๋‚ด์— ์„ ์–ธ๋˜๋ฉฐ, ์†์„ฑ์„ ์กฐ์ž‘ํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

4.3 ์ƒ์„ฑ์ž (Constructors)

์ƒ์„ฑ์ž๋Š” ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ํŠน๋ณ„ํ•œ ๋ฉ”์„œ๋“œ๋กœ, ํด๋ž˜์Šค์™€ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋Š” ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

class Car {
    String brand;

    // ์ƒ์„ฑ์ž
    public Car(String brand) {
        this.brand = brand;
    }

    public void displayBrand() {
        System.out.println("๋ธŒ๋žœ๋“œ: " + brand);
    }
}

public class Main {
    public static void main(String[] args) {
        Car myCar = new Car("Hyundai");
        myCar.displayBrand();
    }
}

์ถœ๋ ฅ ๊ฒฐ๊ณผ:

๋ธŒ๋žœ๋“œ: Hyundai

5. ๊ฐ์ฒด์™€ ๋ฉ”๋ชจ๋ฆฌ

Java์—์„œ ๊ฐ์ฒด๋Š” ํž™ ๋ฉ”๋ชจ๋ฆฌ(Heap Memory)์— ์ €์žฅ๋˜๋ฉฐ, ๊ฐ์ฒด์˜ ์ฐธ์กฐ๋Š” ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ(Stack Memory)์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. new ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์„œ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ: ๋‘ ๊ฐ์ฒด ๋น„๊ต

class Book {
    String title;
}

public class Main {
    public static void main(String[] args) {
        Book book1 = new Book();
        book1.title = "Java Programming";

        Book book2 = new Book();
        book2.title = "Java Programming";

        System.out.println(book1 == book2); // false (์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด)
    }
}

์ถœ๋ ฅ ๊ฒฐ๊ณผ:

false

์œ„ ์ฝ”๋“œ์—์„œ book1๊ณผ book2๋Š” ๋™์ผํ•œ ๋‚ด์šฉ์„ ๊ฐ€์กŒ์ง€๋งŒ, ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์— ์ €์žฅ๋œ ๋ณ„๊ฐœ์˜ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

6. ์‹ค์ƒํ™œ ์˜ˆ์ œ

6.1 ํ•™์ƒ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

ํ•™์ƒ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

class Student {
    String name;
    int age;

    public void displayInfo() {
        System.out.println("์ด๋ฆ„: " + name + ", ๋‚˜์ด: " + age);
    }
}

public class Main {
    public static void main(String[] args) {
        Student student1 = new Student();
        student1.name = "ํ™๊ธธ๋™";
        student1.age = 20;
        student1.displayInfo();
    }
}

์ถœ๋ ฅ ๊ฒฐ๊ณผ:

์ด๋ฆ„: ํ™๊ธธ๋™, ๋‚˜์ด: 20

7. ํด๋ž˜์Šค์™€ ๊ฐ์ฒด ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ

  • ์บก์Аํ™”: ํ•„๋“œ๋ฅผ private๋กœ ์„ ์–ธํ•˜๊ณ  getter์™€ setter ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ œ์–ดํ•˜์„ธ์š”.
  • ์žฌ์‚ฌ์šฉ์„ฑ: ํด๋ž˜์Šค๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ, ์—ฌ๋Ÿฌ ๊ฐ์ฒด๊ฐ€ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ผ๋ฐ˜ํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ: ํ•„์š” ์—†๋Š” ๊ฐ์ฒด๋Š” null๋กœ ์„ค์ •ํ•ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์ œ๊ฑฐํ•˜๋„๋ก ์œ ๋„ํ•˜์„ธ์š”.

๊ฒฐ๋ก 

Java์—์„œ ํด๋ž˜์Šค์™€ ๊ฐ์ฒด๋Š” ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์กฐ์˜ ๊ธฐ๋ณธ ๋‹จ์œ„๋กœ, ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์—ฌ์ค๋‹ˆ๋‹ค. ํด๋ž˜์Šค๋Š” ์†์„ฑ๊ณผ ๋™์ž‘์„ ์ •์˜ํ•˜๋ฉฐ, ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ ์†Œ๊ฐœํ•œ ์˜ˆ์ œ์™€ ๊ฐœ๋…์„ ๋ฐ”ํƒ•์œผ๋กœ Java ํด๋ž˜์Šค์™€ ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•ด ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด ๋ณด์„ธ์š”!

๋Œ“๊ธ€ ์“ฐ๊ธฐ