본문 바로가기
Java_language

클래스의 객체 생성 및 사용

by 헬로제이콥 2025. 11. 26.

Java에서 객체를 생성하는 것은 new 클래스이름(인자) 형태를 사용하며, 이 과정이 생성자(Constructor)를 호출합니다.


💻 예제 코드 1: 축구선수 객체 (Java 버전) ⚽   

❓ 문제 (Quiz)

SoccerPlayer 클래스를 Java로 작성하고, 두 명의 선수 객체를 생성하여 행동을 시켜보는 프로그램을 완성하세요.

SoccerPlayer 클래스 작성:

  • 필드: name (String), backNumber (int), goalCount (int)
  • 생성자: 이름과 등번호를 받아 필드를 설정하고, goalCount는 0으로 초기 설정합니다.
  • 메서드:
    • scoreGoal(): goalCount 필드를 1 증가시키고 골 성공 메시지를 출력합니다.
    • showStats(): 선수의 이름, 등번호, 현재 골 기록을 출력합니다.

💡 정답 (Answer)

1. SoccerPlayer 클래스 정의 (SoccerPlayer.java)

Java
 
public class SoccerPlayer {
    // ⚽️ 필드: 선수의 특징
    String name;
    int backNumber;
    int goalCount; // 기본값 0

    // 🌟 생성자: 객체 생성 시 이름과 등번호를 설정합니다.
    public SoccerPlayer(String name, int backNumber) {
        this.name = name;
        this.backNumber = backNumber;
        this.goalCount = 0; // 명시적으로 0으로 초기화 (int의 기본값과 동일)
        System.out.println("🌟 " + this.name + " 선수 객체가 생성되었습니다! (등번호: " + this.backNumber + ")");
    }

    // 🥅 메서드: 선수의 행동 (골 넣기)
    public void scoreGoal() {
        this.goalCount++; // 골 개수를 1 증가
        System.out.println("🔥 " + this.name + " 선수가 골을 넣었습니다!");
    }

    // ℹ️ 메서드: 상태 확인
    public void showStats() {
        System.out.println("--- " + this.name + " 선수 정보 ---");
        System.out.println("등번호: " + this.backNumber);
        System.out.println("현재 골 기록: " + this.goalCount + " 골");
        System.out.println("--------------------------");
    }
}

2. 객체 생성 및 사용 (SoccerMain.java)

Java
 
public class SoccerMain {
    public static void main(String[] args) {
        // 1. 🥅 객체 생성 (붕어빵 찍어내기)
        // new 키워드와 생성자 호출을 통해 객체를 만듭니다.
        SoccerPlayer son = new SoccerPlayer("손흥민", 7);
        SoccerPlayer lee = new SoccerPlayer("이강인", 10);
        System.out.println();

        // 2. 🏃‍♂️ 객체 사용 (행동 시키기)
        System.out.println("=== 🇰🇷 손흥민 선수 활약 ===");
        son.scoreGoal(); // 골 넣기 메서드 호출
        son.scoreGoal(); // 한 골 더!
        son.showStats(); // 상태 확인
        System.out.println();

        System.out.println("=== 🇰🇷 이강인 선수 활약 ===");
        lee.scoreGoal(); // 골 넣기
        lee.showStats(); // 상태 확인
        
        // 3. 필드 값 직접 확인 (Java에서는 public 필드에 직접 접근 가능)
        System.out.println("⚽️ 최종적으로 " + son.name + " 선수는 " + son.goalCount + " 골을 기록했습니다.");
        System.out.println("⚽️ 최종적으로 " + lee.name + " 선수는 " + lee.goalCount + " 골을 기록했습니다.");
    }
}

🐕 예제 코드 2: 강아지 클래스 만들기 (Java 버전)

❓ 문제 (Quiz)

Dog 클래스를 Java로 작성하고, 두 마리 강아지 객체를 생성하여 행동을 시키고 정보를 변경해 보세요.

Dog 클래스 작성:

  • 필드: name (String), age (int)
  • 생성자: 강아지 객체를 만들 때 이름과 나이를 매개변수로 받아 필드를 설정합니다.
  • 메서드:
    • bark(): 강아지 이름과 함께 "멍! 멍!" 소리를 출력합니다.
    • showInfo(): 강아지의 이름과 나이를 출력합니다.

💡 정답 (Answer)

1. Dog 클래스 정의 (Dog.java)

Java
 
public class Dog {
    // 1. ✨ 필드 (Field)
    String name;
    int age;

    // 2. 🛠️ 생성자 (Constructor): 객체 생성 시 이름과 나이를 정해줍니다.
    public Dog(String name, int age) {
        this.name = name; // 이름 필드 설정
        this.age = age;   // 나이 필드 설정
        System.out.println("새로운 친구 " + this.name + "가 태어났어요! (나이: " + this.age + "살)");
    }

    // 3. 🏃‍♂️ 메서드 (Method) - 짖는 행동
    public void bark() {
        System.out.println("[" + this.name + "]이(가) '멍! 멍!' 하고 짖습니다! 🔊");
    }

    // 4. ℹ️ 메서드 (Method) - 상태 확인
    public void showInfo() {
        System.out.println("--- " + this.name + "의 정보 ---");
        System.out.println("이름: " + this.name);
        System.out.println("나이: " + this.age + "살");
        System.out.println("-----------------------");
    }
}

2. 객체 생성 및 사용 (DogMain.java)

Java
 
public class DogMain {
    public static void main(String[] args) {
        // 1. 🐕 객체 생성 (강아지 입양)
        Dog choco = new Dog("초코", 2); // 초코라는 이름의 2살 강아지 객체 생성
        Dog latte = new Dog("라떼", 5); // 라떼라는 이름의 5살 강아지 객체 생성
        System.out.println();

        // 2. 🏃‍♂️ 객체 사용 (행동 시키기 및 정보 확인)
        System.out.println("=== 🤎 초코의 행동 ===");
        choco.bark();     // 짖기 메서드 사용
        choco.showInfo(); // 정보 확인 메서드 사용
        System.out.println();

        System.out.println("=== 🤍 라떼의 행동 ===");
        latte.bark();
        latte.bark();     // 두 번 짖게 시킬 수도 있어요!
        latte.showInfo();
        System.out.println();

        // 3. 필드 값 직접 변경 및 확인
        System.out.println("🎉 초코가 생일이 되었어요!");
        choco.age = 3; // 초코 객체의 나이 필드를 3으로 직접 변경
        System.out.println("새로운 초코 나이: " + choco.age + "살");
    }
}

🖼️ Java 객체 생성 핵심 정리

과정 Java 코드 의미
객체 생성 Dog choco = new Dog("초코", 2); new 키워드를 사용하여 Dog 설계도로 실제 객체를 만들고, Dog("초코", 2) 생성자를 호출하여 초기값을 설정한 뒤, choco라는 변수에 저장합니다.
메서드 호출 choco.bark(); choco 객체에게 bark()라는 행동을 하도록 명령합니다.
필드 접근 choco.age choco 객체가 가진 age라는 정보를 읽거나 바꿉니다.