클래스와 객체
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 문을 사용해 외부 클래스나 라이브러리를 가져옵니다.
'Java' 카테고리의 다른 글
[JAVA] 오버라이딩(Overriding) , 오버로딩(overloading) , super 와this (0) | 2024.11.30 |
---|---|
[JAVA] 상속(Inheritance) (2) | 2024.11.27 |
자바(Java) 메서드 (1) | 2024.10.22 |
자바(Java) 배열 , 향상된 for문(for-each문) (0) | 2024.10.22 |
자바(Java) 반복문 do while, for 그리고 별찍기 (1) | 2024.10.22 |