본문 바로가기
Java

자바(Java) 클래스 - 객체 생성 및 활용 , import

by 임혁진 2024. 10. 22.

클래스와 객체

1. 기본 클래스: Calculator

클래스는 설계도 역할을 하며, 이를 기반으로 객체를 생성할 수 있습니다. 객체를 사용하지 않고 메소드를 직접 사용하는 경우도 있지만, 객체를 생성하면 코드 재사용성이 높아지고 유지보수가 더 쉬워집니다.

2. 객체 생성하지 않고 메소드 사용

메소드를 static으로 선언하면 객체를 생성하지 않고도 직접 호출할 수 있습니다.

예제 (static 메소드):

public class Calculator {
    public static int add(int a, int b) {
        return a + b;
    }
    
    public static int subtract(int a, int b) {
        return a - b;
    }

    public static void main(String[] args) {
        int result = Calculator.add(5, 3);  // 객체 없이 메소드 호출
        System.out.println("더하기 결과: " + result);
    }
}
  • static 메소드는 클래스 이름으로 직접 호출이 가능하며, 객체 생성 없이 바로 사용할 수 있습니다.

3. 객체를 사용한 방법

객체를 생성하여 클래스의 메소드를 사용할 수 있습니다. 이렇게 하면 같은 클래스의 여러 인스턴스를 만들어 관리할 수 있습니다.

예제 (객체 생성):

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }

    public int subtract(int a, int b) {
        return a - b;
    }

    public static void main(String[] args) {
        Calculator calc = new Calculator();  // 객체 생성
        int result = calc.add(5, 3);  // 객체의 메소드 호출
        System.out.println("더하기 결과: " + result);
    }
}
  • 객체 calc를 생성하여 add와 같은 메소드를 호출할 수 있습니다.
  • 여러 객체를 생성하면 클래스의 독립적인 인스턴스를 만들 수 있어 상태를 따로 유지할 수 있습니다.

예시) 계산기 2개가 필요할 때

객체를 사용하지 않은 왼쪽 , 객체를 사용한 오른쪽

 


클래스와 객체의 관계

  • 클래스설계도 역할을 하며, 객체는 이 설계도로 만든 실제 인스턴스입니다.
  • 객체 생성 방법:
    클래스명 변수이름 = new 클래스명();
    예를 들어:

  • Calculator calc = new Calculator();

멤버 변수와 메소드

  • 멤버 변수: 클래스 내에서 선언된 변수. 클래스의 인스턴스에 속하며, 필드 변수라고도 합니다. 객체가 생성될 때 자동으로 초기화됩니다.
  • 메소드: 클래스의 기능을 정의한 함수. 멤버 변수에 접근하고 조작할 수 있습니다.

클래스 예제 - Pen 클래스

클래스를 설계도로 사용하는 예시입니다.

예제:

public class Pen {
    String color;
    String brand;
    
    public void write() {
        System.out.println("글을 씁니다.");
    }
}
  • Pen 클래스는 설계도 역할을 하며, 이 클래스를 기반으로 객체를 생성할 수 있습니다

객체 사용:

public class Main {
    public static void main(String[] args) {
        Pen myPen = new Pen();  // Pen 객체 생성
        myPen.color = "파란색";
        myPen.brand = "모나미";
        
        myPen.write();  // Pen의 메소드 호출
        System.out.println("펜 색상: " + myPen.color);
    }
}

생성자 (Constructor)

생성자는 객체가 생성될 때 자동으로 호출되는 메소드입니다. 클래스 이름과 동일하며, 반환 타입이 없습니다. 생성자 오버로딩을 통해 여러 생성자를 정의할 수 있습니다.

생성자 예제 (Phone 클래스):

public class Phone {
    String model;
    int price;

    // 생성자
    public Phone(String model, int price) {
        this.model = model;
        this.price = price;
    }

    public void call() {
        System.out.println("전화 걸기");
    }
    
    public static void main(String[] args) {
        Phone myPhone = new Phone("iPhone", 1200);  // 생성자를 이용해 객체 생성
        System.out.println("모델: " + myPhone.model);
    }
}
  • 생성자는 객체를 초기화할 때 필드를 설정하는 역할을 하며, 자동으로 호출됩니다.

멤버 변수와 지역 변수

  • 멤버 변수: 클래스 안에서 선언된 변수로, 클래스의 인스턴스가 생성될 때 자동으로 초기화됩니다.
  • 지역 변수: 메소드 내부에서 선언된 변수로, 직접 초기화해주어야 합니다.

예제:

public class Car {
    String model;  // 멤버 변수 (자동 초기화)
    
    public void drive() {
        int speed = 0;  // 지역 변수 (직접 초기화 필요)
        System.out.println("속도: " + speed);
    }
}

패키지와 import

클래스는 패키지라는 논리적 묶음 안에 포함될 수 있습니다. 다른 패키지에 있는 클래스를 사용하려면 import 문을 통해 가져와야 합니다.

패키지 예제:

// fruit 패키지 내에 있는 Orange 클래스
package fruit;

public class Orange {
    public void eat() {
        System.out.println("오렌지를 먹습니다.");
    }
}

// 다른 패키지에서 Orange 사용
import fruit.Orange;

public class Main {
    public static void main(String[] args) {
        Orange orange = new Orange();
        orange.eat();
    }
}

패키지는 클래스와 파일을 논리적으로 구분하고, import 문을 사용해 외부 클래스나 라이브러리를 가져옵니다.