
: 집합 관계는 한 객체가 다른 객체를 포함하는 관계
(1) Aggregation(집합)
학교와 학생 관계(2) Composition(향상)
집과 방의 관계주문서 클래스가 상품 클래스를 사용하는 경우IS-A관계로 불리며, 자식 클래스는 부모 클래스의 특성을 그대로 가져가면서 확장할 수 있음동물(Animal)과 개(Dog)의 관계클래스(Class)
- 설계도, 붕어빵 틀
- 객체를 생성하기 위한 필드와 메서드가 정의되어 있는 곳
인스턴스(Instance) :
- 붕어빵
- 클래스로부터 만들어진 객체
클래스 설계
설계된 클래스로 객체 생성
생성된 객체 이용
$, _ 외의 특수문자 사용 불가능int, double ... **public 접근 제한자는 파일 이름과 동일한 이름의 클래스 선언에만 붙일 수 있음
new 클래스();
- new는 클래스로부터 객체를 생성시키는 연산자
- new 연산자 뒤에는 생성자가 오는데 생성자는 클래스()의 형태를 가지고 있고, new연산자로 생성된 객체는 메모리 힙heap영역에 생성시킨 후에 객체의 번지를 리턴함
** 이 주소를 참조 타입인 클래스 변수에 저장해두면 변수를 통해 객체 사용 가능
- 객체 지향 프로그램에서는 메모리 내에서 생성된 객체의 위치를 모르면 객체를 사용할 수 없음
class Person {
// 인스턴스 변수(객체마다 개별적으로 존재)
String name;
int age;
// 클래스 변수(모든 객체가 공유)
static int count = 0;
// 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
count++; // 객체가 생성될 때마다 count 증가
}
// 인스턴스 메서드
pubilc void printInfo() {
System.out.println("Name: " + name + ", Age: " + age);
// 클래스 메서드(클래스 변수 접근)
public static void printCount() {
System.out.println("Total number of people : " + count);
}
public static void main(String[] args) {
// 객체 생성
Person person1 = new Person("Alice", 25);
Person person2 = new Person("Bob", 30);
// 인스턴스 메서드 호출(클래스 변수 확인)
Person.printCount();
}
}
Name : Alice, Age : 25
Name : Bob, Age : 30
Total number of people : 2
- 클래스 내부에 선언된 변수
- 객체가 생성될 때 속성(데이터)을 저장하기 위해 사용
- 인스턴스 변수와 클래스(static) 변수로 나눔
class Car {
// 인스턴스 변수(각 객체마다 개별적으로 존재)
String model;
int year;
// 클래스 변수(모든 객체가 공유)
static int totalCars;
- model과 year는 각 객체마다 개별적으로 존재하는 인스턴스 변수
- totalCars는 모든 객체가 공유하는 클래스 변수
- 생성자는 객체가 생성될 때 호출되는 특별한 메서드
- 객체를 초기화하고, 필요한 초기 설정을 수행하는 데 사용됨
- 생성자의 이름은 클래스 이름과 동일하며, 반환 타입을 명시하지 않음
- 기본 생성자(매개 변수가 없는 생성자)와 매개 변수를 받는 생성자가 있음
- 생성자가 명시적으로 정의되지 않으면 기본 생성자가 자동으로 제공됨
Class Car {
String model;
int year;
// 생성자(매개 변수를 받는 생성자)
public Car(String model, int year) {
this.model = model;
this.year = year;
}
// 기본 생성자
public Car() {
this.model = "Unknown";
this.year = 0;
}
}
- Car(String model, int year) 생성자는 Car객체 생성 시 모델과 연도를 초기화함
- Car() 기본 생성자는 모델을 "Unknown", 연도를 0으로 초기화함
- 메서드는 특정 작업을 수행하는 함수
- 반환 타입, 이름, 매개변수 목록으로 구성됨
- 메서드는 객체의 동작을 정의하고, 객체가 수행할 수 있는 행동을 나타냄
- 메서드는 인스턴스 메서드와 클래스 메서드(static 메서드)로 나뉨
Class Car() {
String model;
int year;
// 생성자
public Car(String model, int year) {
this.model = model;
this.year = year;
}
// 인스턴스 메서드
public void displayInfo() {
System.out.println("Model : " + model + ", Year : " + year);
}
// 클래스 메서드
public static void greet() {
System.out.println("Welcome to the car showroom!");
}
}
- displayInfo() 메서드는 인스턴스 메서드로, 각 객체의 model과 year를 출력함
- greet() 메서드는 클래스 메서드로 객체를 생성하지 않고도 호출할 수 있음