IMCAT.DEV
로그인 가입
Java 입문 객체지향

Java 클래스와 객체 기초

Java 클래스와 객체 기초 — 초급

클래스와 객체 기초

1. 도입 (왜 배워야 하는가)

클래스와 객체는 Java 프로그래밍의 핵심 개념입니다. 이 두 개념이 없으면, 프로그램을 모듈화하고 코드 재사용성을 높이는 것이 불가능합니다. 실무에서는 복잡한 시스템을 관리하기 위해 객체 지향 프로그래밍(OOP) 패러다임이 많이 사용되며, 이를 통해 개발자들은 더 쉽게 협업하고 유지보수할 수 있습니다. 클래스를 이해하지 못한다면, 코드의 구조를 잡기 어렵고, 나중에 발생할 수 있는 오류를 디버깅하는 데 큰 어려움을 겪게 될 것입니다.

2. 핵심 개념 설명

  • 클래스(Class): 객체의 설계도입니다. 객체가 가져야 할 속성과 행동을 정의합니다.
  • - 비유: 클래스는 집을 짓기 위한 설계도와 같습니다. 집의 구조와 기능을 미리 정의합니다.

  • 객체(Object): 클래스에서 정의한 속성과 행동을 가진 실체입니다.
  • - 비유: 객체는 설계도를 바탕으로 실제로 지어진 집입니다. 실제로 존재하는 것이라 할 수 있습니다.

    용어정의
    클래스객체의 설계도
    객체클래스에서 만들어진 실체

    3. 기본 코드 예제

    class Car { // Car라는 클래스를 정의합니다.
        String color; // 색상을 나타내는 속성
        int speed; // 속도를 나타내는 속성
    
        void accelerate() { // 가속하는 행동을 정의합니다.
            speed += 10; // 속도를 10 증가시킵니다.
        }
    
        void displayInfo() { // 자동차 정보를 출력하는 행동을 정의합니다.
            System.out.println("색상: " + color + ", 속도: " + speed);
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Car myCar = new Car(); // Car의 객체를 생성합니다.
            myCar.color = "빨강"; // 색상을 빨강으로 설정합니다.
            myCar.speed = 0; // 초기 속도를 0으로 설정합니다.
            
            myCar.accelerate(); // 가속 메서드를 호출합니다.
            myCar.displayInfo(); // 자동차 정보를 출력합니다.
        }
    }

    실행 결과:

    색상: 빨강, 속도: 10

    코드 한 줄씩 동작 설명

    1. class Car { ... }: Car라는 클래스를 정의합니다.
    2. String color;: 색상을 나타내는 속성을 선언합니다.
    3. int speed;: 속도를 나타내는 속성을 선언합니다.
    4. void accelerate() { ... }: 가속하는 메서드를 정의합니다.
    5. speed += 10;: 가속할 때 속도를 10 증가시킵니다.
    6. void displayInfo() { ... }: 자동차 정보를 출력하는 메서드를 정의합니다.
    7. System.out.println(...): 색상과 속도를 출력합니다.
    8. Car myCar = new Car();: Car 클래스의 객체를 생성합니다.
    9. myCar.color = "빨강";: myCar 객체의 색상을 빨강으로 설정합니다.
    10. myCar.speed = 0;: myCar 객체의 초기 속도를 0으로 설정합니다.
    11. myCar.accelerate();: 가속 메서드를 호출하여 속도를 증가시킵니다.
    12. myCar.displayInfo();: 자동차의 현재 정보를 출력합니다.
    13. 4. 실전 활용 예제

    14. 쇼핑몰에서 장바구니 구현하기
    15. class ShoppingCart {
          private List<String> items; // 장바구니에 담긴 상품 목록
      
          public ShoppingCart() {
              items = new ArrayList<>(); // 상품 목록 초기화
          }
      
          public void addItem(String item) {
              items.add(item); // 상품을 장바구니에 추가
          }
      
          public void showItems() {
              System.out.println("장바구니에 담긴 상품: " + items);
          }
      }
      
      public class Main {
          public static void main(String[] args) {
              ShoppingCart cart = new ShoppingCart(); // 장바구니 객체 생성
              cart.addItem("사과"); // 사과 추가
              cart.addItem("바나나"); // 바나나 추가
              cart.showItems(); // 장바구니 내용 출력
          }
      }

      상황 설명: 사용자가 쇼핑몰에서 상품을 장바구니에 담을 때, ShoppingCart 클래스를 사용하여 상품 목록을 관리합니다.

    16. 학생 관리 시스템
    17. class Student {
          String name; // 학생 이름
          int id; // 학생 ID
      
          void displayInfo() {
              System.out.println("이름: " + name + ", ID: " + id);
          }
      }
      
      public class Main {
          public static void main(String[] args) {
              Student student1 = new Student(); // 학생 객체 생성
              student1.name = "홍길동"; // 이름 설정
              student1.id = 1; // ID 설정
              student1.displayInfo(); // 학생 정보 출력
          }
      }

      상황 설명: 학교에서 학생 정보를 관리할 때 Student 클래스를 사용하여 각각의 학생 정보를 저장하고 출력합니다.

      5. 흔한 실수와 주의사항

    18. 클래스 이름과 파일 이름 불일치
    19. - 잘못된 코드:

           class myClass { ... }

      - 올바른 코드:

           class MyClass { ... }

      - 주의사항: Java에서는 클래스 이름과 파일 이름이 동일해야 합니다.

    20. 메서드 접근 제어자 생략
    21. - 잘못된 코드:

           void myMethod() { ... }

      - 올바른 코드:

           public void myMethod() { ... }

      - 주의사항: 메서드의 접근 제어자를 명시하지 않으면 기본 접근 제어자(package-private)가 적용됩니다.

      6. 정리

    22. 클래스는 객체의 설계도이며, 객체는 클래스의 실체입니다.
    23. 객체 지향 프로그래밍은 코드의 재사용성과 관리 용이성을 높여줍니다.
    24. 클래스를 정의하고 객체를 생성하는 기본 문법을 이해해야 합니다.
    25. 다음에 학습하면 좋은 주제:

    26. 상속(Inheritance)
    27. 인터페이스(Interface)
    28. 다형성(Polymorphism)