반응형
✅ 객체지향언어(Object-Oriented Programming Language)
객체지향언어는 프로그램을 객체의 집합으로 구성하는 개념을 기반으로 한다.
코드를 모듈화 하고 각 객체들의 역할과 책임을 분리하여 코드의 재사용성과 관리성을 향상한다.
- Java: 객체지향 프로그래밍 언어로, 안정성, 이식성, 보안성 등이 뛰어나며, JVM을 이용하여 운영체제나 하드웨어와 독립적으로 실행 가능한 바이트 코드를 생성한다.
- C++: C 언어에 객체지향 프로그래밍 기능을 추가한 언어로, 시스템 프로그래밍, 임베디드 시스템, 게임 등에 사용한다.
- Python: 간결하고 읽기 쉬운 문법으로 인기 있는 동적 타이핑 언어로, 객체지향 프로그래밍뿐만 아니라 다양한 프로그래밍 패러다임을 지원한다.
💡 객체지향언어의 주요 특징
- 캡슐화(encapsulation): 객체 내부의 데이터와 메서드를 외부에서 접근할 수 없도록 보호하고, 외부에서는 객체의 인터페이스만을 사용하여 객체와 상호작용한다.
- 상속(inheritance): 이미 정의된 클래스를 기반으로 새로운 클래스를 정의한다.
- 다형성(polymorphism): 같은 이름의 메서드를 여러 객체에서 사용할 수 있도록 하고, 객체의 타입에 따라 다른 동작을 수행한다.
✅ 객체(Object)
객체지향 프로그래밍은 데이터와 이를 처리하는 메서드(함수)를 하나의 단위로 묶는 객체 기반이다.
- 객체는 자신의 속성(attribute)과 행위(behavior)를 가진다.
- 속성(attribute)과 행위(behavior)를 클래스(Class)에 정의한다.
💡 속성(Attribute): 객체의 상태 정보
객체의 속성은 객체의 상태 정보이다.
자바에서 객체의 속성은 멤버 변수(Member Variable)로 정의한다.
- 멤버 변수(Member Variable)는 클래스 내부에 선언한다.
- 멤버 변수(Member Variable)는 인스턴스가 생성될 때마다 각각의 인스턴스에 대해 독립적인 공간을 가진다.
class Person {
String name; // 객체의 이름
int age; // 객체의 나이
}
💡 행위(Behavior): 객체의 동작 정보
객체의 행위는 객체의 동작 정보이다.
자바에서 객체의 행위는 메서드(Method)로 정의한다.
- 메서드(Method)는 클래스 내부에 선언한다.
- 메서드(Method)는 객체의 상태 정보를 조작하거나 다른 객체와 상호작용한다.
class Person {
// 객체의 이름
String name;
// 객체의 나이
int age;
// 객체의 정보를 출력하는 메소드
void printInfo() {
System.out.println("이름: " + name);
System.out.println("나이: " + age);
}
}
✅ 클래스(Class)
클래스(Class)는 객체를 생성하기 위한 설계도이다.
- 객체의 속성(attribute)과 행위(behavior)를 정의한다.
- 객체의 속성(attribute)과 행위(behavior)를 구현하는 메서드를 포함한다.
- 객체를 생성할 때 초기값을 설정하는 객체의 생성자(constructor)를 포함한다.
[접근 제어자] class 클래스 이름 {
// 멤버 변수(속성)
// 생성자(Constructor)
// 메소드(행위)
}
💡 Static 클래스 메서드 (Class Method)
- 클래스 레벨에서 정의되는 메서드이다.
- 객체를 생성하지 않고도 클래스명을 통해 직접 접근할 수 있다.
- 객체의 상태나 속성과 무관한 독립적인 기능을 수행하는 메서드로 사용한다.
- 내부의 정적 변수(static variable)와 함께 사용되어, 상수(constant) 값을 저장하거나 여러 인스턴스들이 공유해야 하는 값을 저장한다.
- 인스턴스 메서드에서 사용할 수 없는 클래스 레벨의 특정한 데이터를 조작하거나 반환한다.
- Math 클래스의 sqrt() 메서드
double result = Math.sqrt(25);
- Arrays 클래스의 sort() 메서드
int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5};
Arrays.sort(arr);
- String 클래스의 valueOf() 메서드
int num = 42;
String str = String.valueOf(num);
double result = Math.sqrt(25);
int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5};
Arrays.sort(arr);
int num = 42;
String str = String.valueOf(num);
💡 인스턴스 메서드 (Instance Method)
인스턴스는 클래스로부터 생성된 객체이다.
- 클래스의 인스턴스(객체) 레벨에서 동작하는 메서드이다.
- 클래스의 인스턴스(객체)를 통하여 호출되며, 호출할 때마다 새로운 객체를 생성하여 메서드를 실행한다.
- 객체의 상태나 속성을 조작하는 메서드로 사용한다.
- String 클래스의 length() 메서드
String str = "Hello World!";
int length = str.length();
- ArrayList 클래스의 add() 메서드
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
- Scanner 클래스의 next() 메서드
Scanner scanner = new Scanner(System.in);
String input = scanner.next();
💡 참조 변수 this
- 객체 자신을 가리키는 참조 변수이다.
- 해당 메서드를 호출한 객체를 가리킨다.
Static 클래스 메서드에서는 this 키워드를 사용할 수 없다.
- Static 메서드는 인스턴스에 의존하지 않고 클래스 자체에서 호출한다.
- Static 메서드에서는 해당 클래스의 인스턴스 변수에 직접 접근할 수 없다.
- 따라서 this 참조 변수를 사용할 수 없다.
public class Calculator {
private static int result;
public static void add(int num) {
result += num; // 클래스 변수에 직접 접근한다.
}
public static void subtract(int num) {
result -= num; // 클래스 변수에 직접 접근한다.
}
public static int getResult() {
return result; // 클래스 변수를 반환한다.
}
}
this 키워드를 사용하여 인스턴스 참조하기
- this 참조 변수를 사용하여 객체의 인스턴스 변수에 접근한다.
- this 참조 변수를 사용하여 인스턴스 메서드에서 다른 인스턴스 메서드를 호출한다.
public class Person {
private String name;
private int age;
public void setName(String name) {
this.name = name; // this 키워드를 사용하여 인스턴스 변수를 참조합니다.
}
public void setAge(int age) {
this.age = age; // this 키워드를 사용하여 인스턴스 변수를 참조합니다.
}
public void printInfo() {
System.out.println("이름: " + this.name); // this 키워드를 사용하여 인스턴스 변수를 참조합니다.
System.out.println("나이: " + this.age); // this 키워드를 사용하여 인스턴스 변수를 참조합니다.
}
}
반응형
'기타 > 백엔드 기초' 카테고리의 다른 글
자바 Java | 상속(Inheritance) 개념과 구현 방법: 단일 상속, 상속 구현, super, Object 클래스 (0) | 2023.02.16 |
---|---|
자바 Java | 생성자(Constructor) 개념: 객체 초기화의 핵심, this() 키워드, 생성자 간 호출 방법 (0) | 2023.02.16 |
자바 Java | 다형성(Polymorphism) 핵심: 오버로딩(Overloading)과 출력 다양성 (1) | 2023.02.16 |
자바 Java | 호출 스택(Call Stack) 구조와 원리: 메서드 실행 과정의 이해 (0) | 2023.02.16 |
자바 Java | 문자열 다루기: String 클래스와 커맨드 라인 인자 사용 방법 (0) | 2023.02.16 |
자바 Java | 배열(Array) 다루기: 선언, 생성, 접근, Arrays 클래스 활용 (0) | 2023.02.15 |
자바 Java | break문과 continue문: 사용 방법과 주의할 점 (0) | 2023.02.15 |
자바 Java | 비교 연산자: 대소 비교, 등가 비교, 문자열 비교 (0) | 2023.02.15 |