- 객체지향 프로그래밍(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 = 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 클래스의 생성자이다. 객체 생성 시 name과 age를 초기화한다.
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;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
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);
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
person.setName("Dave");
person.setAge(35);
person.introduce();
}
}
- 설명
private: 필드를 private으로 선언하여 외부에서 직접 접근하지 못하도록 한다.
getName, getAge: 필드 값을 반환하는 Getter 메서드이다.
setName, setAge: 필드 값을 설정하는 Setter 메서드이다.
setAge 메서드에서는 유효한 값인지 확인하여 데이터의 무결성을 유지한다.