5) 클래스와 객체

SOCICAL·2024년 6월 30일

android

목록 보기
7/20
post-thumbnail
  • 객체지향 프로그래밍(Object-Oriented Programming, OOP) 언어이다.

# 클래스 (Class)

  • 객체를 생성하기 위한 청사진(설계도)이다.
  • 클래스는 데이터(필드)와 행동(메서드)을 정의한다.

- 클래스 정의

public class 클래스이름 {
    // 필드 (멤버 변수)
    // 메서드 (멤버 함수)
}

- 예제: 클래스 정의

public class Person {
    // 필드
    String name;
    int age;

    // 메서드
    void introduce() {
        System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");
    }
}

# 객체 (Object)

  • 클래스의 인스턴스(instance)이다.
  • 객체는 클래스에서 정의한 필드와 메서드를 실제로 사용하게 한다.

- 객체 생성

클래스이름 객체이름 = new 클래스이름();

- 예제: 객체 생성 및 사용

public class Main {
    public static void main(String[] args) {
        // Person 클래스의 객체 생성
        Person person = new Person();

        // 필드 초기화
        person.name = "Alice";
        person.age = 30;

        // 메서드 호출
        person.introduce();
    }
}

- 설명

  • Person person = new Person();: Person 클래스의 객체를 생성한다.
  • person.name = "Alice";: name 필드를 초기화한다.
  • person.age = 30;: age 필드를 초기화한다.
  • person.introduce();: introduce 메서드를 호출한다.

# 생성자 (Constructor)

  • 객체가 생성될 때 호출되는 특별한 메서드이다.
  • 생성자는 클래스 이름과 동일하며 반환형이 없다.

- 예제: 생성자 정의

public class Person {
    // 필드
    String name;
    int age;

    // 생성자
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 메서드
    void introduce() {
        System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");
    }
}

public class Main {
    public static void main(String[] args) {
        // 생성자를 사용한 객체 생성
        Person person = new Person("Bob", 25);
        person.introduce();
    }
}

- 설명

  • public Person(String name, int age): Person 클래스의 생성자이다. 객체 생성 시 nameage를 초기화한다.
  • Person person = new Person("Bob", 25);: 생성자를 사용하여 Person 객체를 생성하고 초기화한다.

# 캡슐화 (Encapsulation)

  • 객체의 필드를 외부에서 직접 접근하지 못하도록 하고, 대신 메서드를 통해 접근하는 방법이다. 이를 통해 데이터의 무결성을 보호할 수 있다.

- 예제: 캡슐화

public class Person {
    // 필드
    private String name;
    private int age;

    // 생성자
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Getter 메서드
    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    // Setter 메서드
    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        if (age > 0) {
            this.age = age;
        }
    }

    // 메서드
    void introduce() {
        System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");
    }
}

public class Main {
    public static void main(String[] args) {
        // 객체 생성
        Person person = new Person("Charlie", 40);

        // Getter 메서드 사용
        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());

        // Setter 메서드 사용
        person.setName("Dave");
        person.setAge(35);

        // 업데이트된 정보 출력
        person.introduce();
    }
}

- 설명

  • private: 필드를 private으로 선언하여 외부에서 직접 접근하지 못하도록 한다.
  • getName, getAge: 필드 값을 반환하는 Getter 메서드이다.
  • setName, setAge: 필드 값을 설정하는 Setter 메서드이다.
  • setAge 메서드에서는 유효한 값인지 확인하여 데이터의 무결성을 유지한다.

0개의 댓글