Class란?
- 객체(변수)를 사용하기 위한 설계도
- 형식:
class 클래스명 {
변수 선언부
...
함수(method) 선언부 // method == 클래스에 소속되어 있는 함수
}
- 클래스 객체를 선언(생성):
클래스명 객체(변수) = new 클래스명(); // new == 동적 할당
// 예시
MyClass cls = new MyClass(); // 변수 == 객체(instance, object)를 선언
MyClass[] clsArr = new MyClass[10]; // 클래스 배열 선언
1. 클래스 정의
- 키워드: class
- 클래스 이름은 대문자로 시작하는 것이 관례임.
public class MyClass {
// 속성(변수)
int number;
String text;
// 생성자
public MyClass(int number, String text) {
this.number = number;
this.text = text;
}
// 메서드
public void display() {
System.out.println("Number: " + number + ", Text: " + text);
}
}
1-2. 접근 제어자
- public: 모든 클래스에서 접근 가능
- private: 같은 클래스 내에서만 접근 가능
- protected: 같은 패키지 내 또는 자식 클래스에서 접근 가능
- default(아무 것도 기입하지 않음): 같은 패키지 내에서만 접근 가능
1-3. 필드와 메서드
- 필드: 클래스의 속성으로, 객체의 상태를 나타냅니다. // 변수 선언부
- 메서드: 클래스의 기능으로, 객체가 수행할 수 있는 작업을 정의합니다. // 메소드 선언부
2. 객체 생성
- 클래스를 정의한 후, 그 클래스를 기반으로 객체를 생성할 수 있음.
public class Main {
public static void main(String[] args) {
// MyClass 클래스의 객체 생성
MyClass myObject = new MyClass(10, "Hello");
// 메서드 호출
myObject.display();
}
}
3. 생성자
생성자는 객체가 생성될 때 호출되는 특별한 메서드입니다. 생성자는 클래스 이름과 동일하며 반환 타입이 없습니다. 기본 생성자와 매개변수가 있는 생성자를 정의할 수 있습니다.
public class MyClass {
int number;
// 기본 생성자
public MyClass() {
number = 0;
}
// 매개변수가 있는 생성자
public MyClass(int number) {
this.number = number;
}
}
4. 상속
Java에서는 클래스가 다른 클래스를 상속받아 기능을 확장할 수 있습니다.
public class Animal {
public void eat() {
System.out.println("Eating...");
}
}
public class Dog extends Animal {
public void bark() {
System.out.println("Barking...");
}
}
// 사용 예
Dog myDog = new Dog();
myDog.eat(); // 상속된 메서드 호출
myDog.bark(); // Dog 클래스의 메서드 호출
5. 인터페이스
인터페이스는 클래스가 구현해야 하는 메서드의 집합을 정의합니다. 다중 상속을 지원합니다.
public interface Animal {
void eat();
}
public class Dog implements Animal {
public void eat() {
System.out.println("Dog is eating.");
}
}
6. 패키지
클래스를 그룹화하여 관리할 수 있도록 패키지를 사용할 수 있습니다. 패키지는 package 키워드로 정의합니다.
package mypackage;
public class MyClass {
// ...
}
7. 예외 처리
클래스 내에서 발생할 수 있는 예외를 처리하기 위해 try-catch 문을 사용합니다.
public class MyClass {
public void riskyMethod() {
try {
// 위험한 코드
} catch (Exception e) {
System.out.println("예외 발생: " + e.getMessage());
}
}
}'Java > OOP' 카테고리의 다른 글
| [스크랩] JavaScript의 두 축 (Eric Elliott) (2) | 2025.01.24 |
|---|---|
| [Java] 다형성 (Polymorphism): 하나의 부모 인스턴스로 자식 객체를 관리 + 강제 형변환 (1) | 2025.01.08 |
| [Java] 상속 + Override (1) | 2025.01.08 |
| [Java] 오버로드 (Overload), 가변인수(...) (1) | 2025.01.06 |
| [Java] 객체 지향 프로그래밍 vs 절차 지향 프로그래밍 (1) | 2025.01.03 |