본문 바로가기
GD's IT Lectures : 기초부터 시리즈/자바(JAVA) 기초부터 ~

[자바(JAVA)] 클래스와 객체

by GDNGY 2023. 4. 27.

9. 클래스와 객체

자바에서 클래스와 객체는 객체 지향 프로그래밍의 핵심 개념입니다. 이들의 정의와 역할은 다음과 같습니다.

 

클래스(Class)
클래스는 객체를 생성하기 위한 틀 또는 설계도입니다. 클래스는 객체의 속성(변수)과 동작(메서드)을 정의합니다. 예를 들어, '자동차'라는 클래스가 있다면, 이 클래스는 자동차의 색상, 브랜드, 최고 속도 등의 속성과 가속, 감속, 시동 켜기 등의 동작을 정의할 수 있습니다. 클래스는 데이터와 메서드를 캡슐화하여 코드 재사용성을 향상하고, 유지 관리를 용이하게 합니다.

 

객체(Object)
객체는 클래스를 기반으로 생성된 실체입니다. 클래스를 통해 여러 객체를 생성할 수 있으며, 각 객체는 해당 클래스의 속성과 동작을 가지게 됩니다. 객체는 클래스의 인스턴스(instance)라고도 불립니다. 예를 들어, '자동차' 클래스를 사용하여 여러 자동차 객체를 생성할 수 있고, 각 객체는 고유한 색상, 브랜드, 최고 속도 등을 가질 수 있습니다.

 

클래스와 객체의 관계는 설계도와 실제 제품의 관계와 비슷합니다. 클래스는 설계도이며, 객체는 그 설계도를 바탕으로 생성된 실제 제품입니다. 자바에서 클래스를 정의하고 객체를 생성하여 사용함으로써, 코드의 재사용성, 확장성, 유지 관리성을 향상시킬 수 있습니다.


9.1. 클래스 선언

클래스는 객체를 생성하기 위한 틀로, 객체의 속성(멤버 변수)과 기능(메소드)을 포함합니다. 클래스를 선언할 때는 class 키워드를 사용하며, 일반적으로 대문자로 시작하는 이름을 사용합니다.

class Person {
    String name; // 멤버 변수
    int age; // 멤버 변수

    void introduce() { // 메소드
        System.out.println("이름: " + name + ", 나이: " + age);
    }
}

 

9.2. 객체 생성 및 사용

객체는 클래스의 인스턴스로, 클래스를 new 키워드를 사용하여 생성합니다. 생성된 객체를 통해 멤버 변수에 접근하거나 메서드를 호출할 수 있습니다.

Person person1 = new Person(); // Person 클래스의 객체 생성
person1.name = "홍길동"; // 객체의 멤버 변수에 값을 할당
person1.age = 30;
person1.introduce(); // 객체의 메소드 호출

 

9.3. 생성자와 소멸자

생성자(Constructor)는 객체가 생성될 때 자동으로 호출되는 메소드로, 객체의 초기화 작업을 수행합니다. 생성자는 클래스 이름과 같으며, 리턴 타입을 지정하지 않습니다. 생성자를 명시적으로 정의하지 않으면 컴파일러가 기본 생성자를 자동으로 생성합니다. 자바에서는 소멸자(Destructor) 대신 Garbage Collector를 사용해 자동으로 메모리를 관리합니다.

class Person {
    String name;
    int age;

    // 생성자
    Person(String inputName, int inputAge) {
        name = inputName;
        age = inputAge;
    }

    void introduce() {
        System.out.println("이름: " + name + ", 나이: " + age);
    }
}

Person person2 = new Person("이몽룡", 25); // 생성자를 사용하여 객체 생성 및 초기화
person2.introduce();

 

9.4. this 키워드

this 키워드는 현재 객체를 참조하는 데 사용됩니다. this를 사용하여 멤버 변수와 메서드의 이름이 같은 로컬 변수를 구별할 수 있습니다. 또한, this를 사용하여 생성자에서 다른 생성자를 호출할 수도 있습니다.

class Person {
    String name;
    int age;

    // 생성자
    Person(String name, int age) {
        this.name = name; // this를 사용하여 멤버 변수와 로컬 변수 구별
        this.age = age;
    }

    // 다른 생성자를 호출하는 생성자
    Person(String name) {
        this(name, 0); // 다른 생성자 호출
    }

    void introduce() {
        System.out.println("이름: " + name + ", 나이: " + age);
    }
}

Person person3 = new Person("성춘향");
person3.introduce();
반응형

댓글