클래스(Class)
💡클래스(Class)란?
- Java에서 클래스는 객체 지향 프로그래밍의 핵심 요소로, 관련된 데이터와 동작을 하나의 단위로 묶어 코드의 재사용성과 유지보수성을 높입니다.
- 클래스를 사용하면 int, String과 같은 타입을 직접 만들 수 있습니다. 즉, 사용자가 직접 정의하는 사용자 정의 타입을 만드는 설계도가 클래스입니다.
✅ 예제 : 클래스를 사용하지 않은 경우
public class NoClassExample {
public static void main(String[] args) {
// Bicycle 1
int cadence1 = 0;
int speed1 = 0;
int gear1 = 1;
cadence1 = 50;
gear1 = 2;
speed1 += 10;
System.out.println("Bicycle1 - cadence:" + cadence1 + " speed:" + speed1 + " gear:" + gear1);
// Bicycle 2
int cadence2 = 0;
int speed2 = 0;
int gear2 = 1;
cadence2 = 70;
gear2 = 3;
speed2 += 20;
System.out.println("Bicycle2 - cadence:" + cadence2 + " speed:" + speed2 + " gear:" + gear2);
}
}
- 자전거가 여러 개일 경우 변수명이 무한히 늘어남 → 유지보수 어려움
- 중복 코드 많고 코드 가독성 떨어짐
✅ 예제 : 클래스를 사용한 경우
public class Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
void changeCadence(int newValue) {
cadence = newValue;
}
void changeGear(int newValue) {
gear = newValue;
}
void speedUp(int increment) {
speed += increment;
}
void applyBrakes(int decrement) {
speed -= decrement;
}
void printStates() {
System.out.println("cadence:" + cadence + " speed:" + speed + " gear:" + gear);
}
}
public class ClassExample {
public static void main(String[] args) {
Bicycle bike1 = new Bicycle();
Bicycle bike2 = new Bicycle();
bike1.changeCadence(50);
bike1.changeGear(2);
bike1.speedUp(10);
bike2.changeCadence(70);
bike2.changeGear(3);
bike2.speedUp(20);
bike1.printStates();
bike2.printStates();
}
}
- 재사용 가능, 명확한 구조, 상태 관리 쉬움
💡배열(Arrays)을 사용하면 안되나요?
- 배열은 동일한 타입의 데이터를 순차적으로 저장하는 데 유용하지만, 각 요소에 의미를 부여하기 어렵고, 구조가 복잡해질수록 유지보수가 어려워집니다.
✅ 예제
public class BicycleArrayExample {
public static void main(String[] args) {
// [0]: cadence, [1]: speed, [2]: gear
int[] bike1 = {0, 0, 1};
int[] bike2 = {0, 0, 1};
bike1[0] = 50; // cadence
bike1[1] += 10; // speed
bike1[2] = 2; // gear
bike2[0] = 70;
bike2[1] += 20;
bike2[2] = 3;
System.out.println("Bicycle1 - cadence:" + bike1[0] + " speed:" + bike1[1] + " gear:" + bike1[2]);
System.out.println("Bicycle2 - cadence:" + bike2[0] + " speed:" + bike2[1] + " gear:" + bike2[2]);
}
}
- 어떤 인덱스가 어떤 의미인지 외우거나 주석 달아야 함
- 캡슐화 불가능, changeGear(), speedUp() 같은 동작 정의 불가
💡클래스(Class) 내부 구성 요소
- 멤버 변수(Member Variable) or 필드(Field) : 클래스 내에 선언된 변수로, 객체의 상태를 저장합니다. 1
- 멤버 변수 : 특정 클래스에 소속된 멤버이기 때문에 멤버 변수라고 부른다.
- 필드 : 데이터 항목을 가르키는 전통적인 용어이다. DB, 엑셀 등 데이터 각각의 항목을 필드라고 한다.
Member variables in a class—these are called fields.
✅ 예제 : Bicycle 클래스의 필드는 다음과 같이 선언됩니다
public class Bicycle {
public int cadence;
public int gear;
public int speed;
}
객체(Object)
💡객체(object)란?
An object stores its state in fields(variables in some programming languages) and exposes its behavior through methods(functions in some programming languages).
💡객체 참조의 개념
- Java에서는 객체 자체가 아닌 객체의 참조값을 변수에 저장합니다. 이 참조값은 객체가 저장된 메모리 위치를 나타내며, 이를 통해 객체에 접근하고 조작할 수 있습니다.
💡객체 생성 및 메모리 할당
The "new" operator instantiates a class by allocating memory for a new object and returning a reference to that memory.
✅ 예제
Bicycle bicycle1 = new Bicycle(); // 객체의 주소 x0001이 bicycle1에 저장됨
💡객체 활용
- 객체의 필드나 메서드에 접근할 때는 . 연산자를 사용합니다. 이 연산자는 객체의 참조값을 통해 해당 멤버에 접근하는 역할을 합니다.
💡객체의 독립성
- 객체는 서로 독립적인 상태를 가집니다.
- 각각 독립적인 메모리 공간을 가지므로, 한 객체의 필드 값을 변경해도 다른 객체에 영향을 주지 않습니다.
Bicycle bicycle1 = new Bicycle();
Bicycle bicycle2 = new Bicycle();
bicycle1.gear = 3;
bicycle2.gear = 5;
인스턴스(Instance)
💡인스턴스(Instance)란?
The phrase "instantiating a class" means the same thing as "creating an object." When you create an object, you are creating an "instance" of a class, therefore "instantiating" a class.
출처
김영한의 실전 자바 - 기본편 강의 | 김영한 - 인프런
김영한 | , 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 안다? 이걸로는 안됩니다!전 우아한형제들 기술이사, 누적 수강생 40만 명 돌
www.inflearn.com
출처 주석
반응형
'Java > Grammar' 카테고리의 다른 글
[Java] 생성자 (Constructor) (0) | 2025.04.30 |
---|---|
[Java] 배열 (Arrays) (1) | 2025.04.25 |
[Java] 변수의 생존 범위 (Scope) (1) | 2025.04.24 |
[Java] 제어 흐름 문 (Control Flow Statements) (2) | 2025.04.22 |
[Java] Checked, Unchecked Exception (0) | 2025.03.25 |