변수의 종류선언 위치에 따른 변수의 종류변수는 선언되는 위치에 따라 다음과 같이 세 가지로 구분됩니다.지역 변수 : 메서드 내부에서 선언되는 변수로, 해당 메서드가 실행될 때 생성되고 종료 시 소멸됩니다.인스턴스 변수 : 클래스의 인스턴스가 생성될 때마다 각각의 객체에 따로 할당되는 변수로, 객체의 상태를 나타냅니다.클래스 변수 : static 키워드로 선언된 변수로, 클래스의 모든 인스턴스가 공유하는 변수입니다.public class Car { // 인스턴스 변수 String color; // 클래스 변수 static int totalCars; public Car(String color) { this.color = color; totalCars..
객체지향 프로그래밍에서 생성자(Constructor)와 객체 초기화는 객체를 생성하고 초기 상태를 설정하는 중요한 개념입니다. 객체를 만들 때 반드시 호출되는 생성자는 객체의 초기 상태를 정의하고, 초기화 블럭은 객체의 필드를 초기화하는 또 다른 방법입니다. 생성자와 초기화 블럭을 잘 활용하면 객체를 더 효율적이고 안정적으로 생성할 수 있습니다.변수의 초기화명시적 초기화변수를 선언할 때 기본값을 설정하는 것을 명시적 초기화라고 합니다. 가장 직관적이고 간단한 초기화 방법입니다.public class Car { String color = "White"; String manufacturer = "Unknown"; int speed = 0;}초기화 블럭초기화 블럭은 {} 안에 초기화 코드를 작..
캡슐화(Encapsulation)란?캡슐화는 객체지향 프로그래밍의 중요한 개념으로, 객체 내부에서 데이터를 보호하고 외부에서 직접 접근할 수 없도록 막습니다. 이 과정에서 객체 내부 구현이 변경되더라도 외부 코드에 영향을 주지 않도록 해서, 유지보수성을 크게 향상시킬 수 있습니다. 즉, 데이터의 무결성 보호와 유연한 코드 수정이 주요 목적입니다.캡슐화의 주요 목적데이터의 직접적인 접근을 제한합니다.데이터를 수정하거나 가져올 때 검증 로직을 추가해서 안전하게 처리합니다.외부에 객체의 내부 구현을 숨기고, 필요한 정보만 노출해서 코드의 유연성을 높입니다.접근 제어자와 정보 은닉접근 제어자는 정보 은닉과 캡슐화를 구현하는 기본 수단입니다. 정보 은닉은 불필요한 데이터 노출을 막고, 객체의 외부에서 특정 속성에..
다형성(Polymorphism)의 개념과 원리다형성은 객체지향 프로그래밍의 핵심 개념 중 하나로, 동일한 메서드 호출이 객체의 실제 타입에 따라 다르게 동작할 수 있도록 합니다. 이를 통해 다양한 객체를 일관된 방식으로 처리할 수 있으며, 코드의 유연성과 확장성을 극대화할 수 있습니다.다형성의 구현 방식컴파일 타임 다형성 : 메서드 오버로딩을 통해 구현됩니다. 메서드 이름은 동일하지만 서로 다른 매개변수를 받는 여러 메서드를 정의하며, 호출 시점에 적합한 메서드가 선택됩니다.public class MathUtil { public int add(int a, int b) { return a + b; } public double add(double a, double b) { ..
추상화(Abstraction)란?추상화는 복잡한 현실 세계의 객체를 프로그램에서 다루기 쉽도록 필수적인 속성과 기능만을 남기고, 세부 사항은 감추는 과정입니다. 객체의 중요한 속성에 집중하고, 불필요한 세부 사항을 감춰서 설계의 간결함을 유지할 수 있습니다. 이는 객체지향의 중요한 개념 중 하나로 프로그램의 유지보수성을 높이고, 향후 확장성을 고려한 설계를 가능하게 합니다.추상 클래스 개념 및 작성 방법추상 클래스는 공통적인 속성이나 메서드를 정의하는 동시에, 일부는 구체적으로 구현하지 않고 하위 클래스에서 구현을 강제하는 클래스입니다. 추상 클래스는 직접 인스턴스를 생성할 수 없고, 반드시 상속받은 자식 클래스에서 구체화되어야 합니다. 추상 클래스는 abstract 키워드를 사용해서 정의합니다. 추상 ..
상속이란?상속(Inheritance)은 객체지향 프로그래밍에서 핵심 개념 중 하나로, 하나의 클래스가 다른 클래스의 속성과 메서드를 물려받아 재사용할 수 있는 기능입니다. 이를 통해 코드의 중복을 줄이고 유지보수를 쉽게 할 수 있으며, 다형성을 구현할 수 있는 기초가 됩니다.상속의 개념과 장점상속은 기존의 클래스(부모 클래스 또는 슈퍼 클래스)의 속성 및 메서드를 새로운 클래스(자식 클래스 또는 서브 클래스)가 상속받아 사용하는 것입니다. 자식 클래스는 부모 클래스의 모든 멤버(필드와 메서드)를 물려받으며, 이를 활용해 새로운 기능을 추가하거나 기존 기능을 수정(오버라이딩)할 수 있습니다.// 부모 클래스public class Animal { String name; void eat() { ..
📚 클래스와 객체의 개요객체지향 프로그래밍에서 클래스(Class)와 객체(Object)는 핵심 개념입니다. 클래스는 객체를 생성하기 위한 설계도이며, 객체는 그 설계도를 바탕으로 생성된 실체입니다. 속성(필드)과 메서드(기능)를 정의한 객체가 어떤 데이터를 가지고 어떤 동작을 할 수 있는지를 결정합니다. 클래스는 추상적인 개념으로, 구체적인 데이터를 가지고 있진 않지만, 객체를 생성할 수 있는 템플릿을 제공합니다. 클래스를 사용하면 코드가 더 구조적이고 재사용 가능해지며, 유지보수가 용이해집니다.🏗️ 클래스란?클래스는 객체를 생성하기 위한 템플릿('틀' 또는 '설계도')입니다. 클래스는 객체가 지닌 속성(필드)과 메서드(기능)를 정의합니다. 클래스 자체는 추상적인 개념으로, 객체를 만들기 위한 설계도..
📝 절차지향 프로그래밍이란?절차지향 프로그래밍은 프로그램을 순차적인 절차로 구성하는 방법입니다. 이 방식은 주로 기능 중심으로 코드를 작성하며, 각 함수가 순차적으로 실행됩니다. 프로그램의 흐름을 제어하는 함수들을 통해 작업을 처리하는 방식입니다. 🔑 절차지향의 주요 특징순차적 처리 : 프로그램이 위에서 아래로 순서대로 실행됩니다.함수 중심 : 코드의 기능을 수행하는 독립적인 함수로 구성됩니다.데이터와 함수의 분리 : 함수와 데이터가 서로 독립적인 형태로 존재합니다. 🖥 절차지향 방식의 예시int add(int a, int b) { return a + b;}int main() { int result = add(5, 10); printf("Result: %d\n", result); ..