- Published on
항해99 플러스 백엔드 코스 6기 언어 사전 스터디 3주차 (1) - 클래스
- Authors
- Name
- Kil Hyeon Jun
항해99 플러스 백엔드 코스 6기 언어 사전 스터디 3주차 - 클래스
소개
이번 3주차 스터디에서는 Java의 클래스에 대해 학습했다.
1. 객체 지향 프로그래밍 (Object-Oriented Programming)
객체 지향 프로그래밍이란?
- 객체를 중심으로 프로그래밍하는 방식
- 클래스를 통해 객체를 생성하고, 객체 간의 상호작용을 통해 프로그램을 구현
객체란?
- 속성 (Attribute): 객체의 특징을 나타내는 데이터
- 메소드 (Method): 객체의 동작을 나타내는 코드
객체지향 프로그래밍의 특징
캡슐화 (Encapsulation)
- 객체의 속성과 메소드를 하나로 묶어 외부에서 접근을 제한하는 것
- 정보 은닉 (Information Hiding)을 통해 객체의 상태를 보호
상속 (Inheritance)
- 부모 클래스의 속성과 메소드를 자식 클래스가 물려받는 것
- 코드의 재사용성을 높이고, 유지보수를 용이하게 함
다형성 (Polymorphism)
- 하나의 메소드나 클래스가 다양한 방식으로 동작하는 것
- 오버로딩 (Overloading)과 오버라이딩 (Overriding)을 통해 구현
추상화 (Abstraction)
- 객체의 공통된 특징을 추출하여 클래스로 정의하는 것
- 객체의 복잡성을 줄이고, 코드의 가독성을 높임
2. 클래스 (Class)
클래스란?
- 객체를 생성하기 위한 설계도
- 객체의 속성과 메소드를 정의
클래스의 구성 요소
필드 (Field)
- 객체의 속성을 나타내는 변수
- 객체의 상태를 저장
메소드 (Method)
- 객체의 동작을 나타내는 함수
- 객체의 행위를 정의
생성자 (Constructor)
- 객체를 생성할 때 호출되는 특수한 메소드
- 객체의 초기화를 담당
클래스의 선언
public class ClassName {
// 필드
private int field;
// 생성자
public ClassName() {
// 초기화
}
// 메소드
public void methodName() {
// 동작
}
}
클래스의 사용
public class Main {
public static void main(String[] args) {
// 객체 생성
ClassName obj = new ClassName();
// 메소드 호출
obj.methodName();
}
}
3. 클래스와 객체
클래스와 객체의 관계
- 클래스: 객체를 생성하기 위한 설계도
- 객체: 클래스를 통해 생성된 실체
객체 생성 (인스턴스화)
- 클래스를 통해 객체를 생성하는 과정
new
키워드를 사용하여 객체 생성
객체 사용
- 객체를 통해 클래스의 필드와 메소드에 접근
.
연산자를 사용하여 객체의 속성과 동작을 호출
4. 메소드 오버로딩 (Method Overloading)
메소드 오버로딩이란?
- 같은 이름의 메소드를 여러 개 정의하는 것
- 매개변수의 타입, 개수, 순서가 다르면 오버로딩 가능
메소드 오버로딩의 장점
- 메소드 이름을 통일하여 사용성을 높임
- 다양한 매개변수를 받아 처리 가능
메소드 오버로딩의 예시
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
5. 인스턴스 멤버와 클래스 멤버
인스턴스 멤버 (Instance Member)
- 객체를 생성해야 사용할 수 있는 멤버
- 객체마다 별도로 생성되는 필드와 메소드
클래스 멤버 (Class Member)
- 객체 생성 없이 사용할 수 있는 멤버
- 클래스에 고정된 필드와 메소드
인스턴스 멤버와 클래스 멤버의 차이
- 인스턴스 멤버: 객체마다 다른 값을 가질 수 있음
- 클래스 멤버: 모든 객체가 공유하는 값을 가짐
클래스 멤버의 선언
static
키워드를 사용하여 클래스 멤버를 선언
public class ClassName {
// 클래스 필드
public static int classField;
// 클래스 메소드
public static void classMethod() {
// 동작
}
}
클래스 멤버의 사용
- 클래스 이름을 통해 접근
public class Main {
public static void main(String[] args) {
// 클래스 필드 사용
ClassName.classField = 10;
// 클래스 메소드 호출
ClassName.classMethod();
}
}
6. 정리
- 객체 지향 프로그래밍은 객체를 중심으로 프로그래밍하는 방식
- 클래스는 객체를 생성하기 위한 설계도
- 클래스는 필드, 메소드, 생성자로 구성
- 클래스를 통해 객체를 생성하고, 객체 간의 상호작용을 통해 프로그램을 구현
- 메소드 오버로딩을 통해 같은 이름의 메소드를 여러 개 정의 가능
- 인스턴스 멤버는 객체마다 다른 값을 가지며, 클래스 멤버는 모든 객체가 공유하는 값을 가짐