카테고리 없음

클래스와 객체

안테 2024. 6. 23. 12:38

자바는 객체 지향 프로그래밍(OOP) 언어로서, 클래스와 객체는 자바 프로그래밍의 기본 개념입니다. 이들 개념을 이해하는 것은 자바 프로그래밍의 핵심입니다.

클래스 (Class)
클래스는 객체를 생성하기 위한 설계도 또는 청사진입니다. 클래스는 데이터와 메서드를 정의하여 객체의 구조와 동작을 설명합니다.

클래스 정의
클래스는 일반적으로 다음과 같은 형식으로 정의됩니다:

java
코드 복사
public class ClassName {
    // 필드 (변수)
    private int field1;
    private String field2;

    // 생성자
    public ClassName(int field1, String field2) {
        this.field1 = field1;
        this.field2 = field2;
    }

    // 메서드
    public void method1() {
        System.out.println("Method1 called");
    }

    public int getField1() {
        return field1;
    }

    public void setField1(int field1) {
        this.field1 = field1;
    }
}
필드: 클래스의 상태를 저장하는 변수입니다. 클래스의 속성이라고 할 수 있습니다.
생성자: 객체가 생성될 때 호출되는 특별한 메서드로, 객체의 초기화 작업을 수행합니다.
메서드: 클래스의 동작을 정의하는 함수입니다.
객체 (Object)
객체는 클래스의 인스턴스입니다. 객체는 클래스에 정의된 필드와 메서드를 포함하며, 클래스의 구조를 기반으로 실제 데이터를 저장하고 기능을 수행합니다.

객체 생성
클래스를 정의한 후, new 연산자를 사용하여 객체를 생성합니다:

java
코드 복사
public class Main {
    public static void main(String[] args) {
        // 객체 생성
        ClassName obj = new ClassName(10, "Hello");

        // 메서드 호출
        obj.method1();

        // 필드 접근
        int value = obj.getField1();
        System.out.println("Field1: " + value);

        // 필드 값 변경
        obj.setField1(20);
        System.out.println("Updated Field1: " + obj.getField1());
    }
}
클래스와 객체의 관계
클래스는 객체를 생성하기 위한 틀입니다.
객체는 클래스의 실체로, 클래스에서 정의한 필드와 메서드를 가지고 있으며, 클래스의 구조와 동작을 구체화한 것입니다.
접근 제어자
자바에서는 접근 제어자를 사용하여 클래스, 필드, 메서드의 접근 범위를 설정할 수 있습니다. 주요 접근 제어자는 다음과 같습니다:

public: 어디서나 접근할 수 있습니다.
private: 클래스 내부에서만 접근할 수 있습니다.
protected: 같은 패키지 내에서나 자식 클래스에서 접근할 수 있습니다.
default (package-private): 같은 패키지 내에서만 접근할 수 있습니다.
클래스 상속
자바에서는 상속을 통해 기존 클래스의 기능을 확장할 수 있습니다. 상속을 통해 자식 클래스는 부모 클래스의 필드와 메서드를 상속받고, 추가적인 필드와 메서드를 정의할 수 있습니다.

예제:

java
코드 복사
// 부모 클래스
public class Animal {
    public void eat() {
        System.out.println("This animal eats food.");
    }
}

// 자식 클래스
public class Dog extends Animal {
    public void bark() {
        System.out.println("The dog barks.");
    }
}
사용 예:

java
코드 복사
public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat(); // 상속받은 메서드
        dog.bark(); // 자식 클래스의 메서드
    }
}
클래스의 주요 특징
추상화: 클래스는 실제 구현을 숨기고, 필요한 정보만 외부에 제공함으로써 추상화된 인터페이스를 제공합니다.
캡슐화: 필드와 메서드를 클래스 내부에 캡슐화하여 데이터를 보호하고, 외부에서의 직접 접근을 제한합니다.
상속: 클래스를 상속받아 새로운 클래스를 생성하고, 기존 클래스의 기능을 재사용하거나 확장할 수 있습니다.
다형성: 동일한 메서드 호출이 객체에 따라 다르게 동작할 수 있는 특성을 제공합니다.
이러한 개념들을 활용하여 자바에서 강력하고 유지보수하기 쉬운 객체 지향 프로그램을 작성할 수 있습니다.