🌟 자바 프로그래밍의 핵심 개념 정리 🌟
🧩 객체 지향 프로그래밍 (OOP)의 이점
1. 모듈화
➡️ 객체의 소스 코드는 독립적으로 작성 및 유지 관리될 수 있습니다. 객체는 시스템 내에서 쉽게 전달될 수 있습니다.
2. 정보 은닉
➡️ 객체의 메서드를 통해서만 상호 작용할 수 있으며, 내부 구현은 외부로부터 숨겨집니다.
3. 코드 재사용
➡️ 이미 존재하는 객체를 활용하여 프로그램을 개발할 수 있습니다. 복잡한 작업을 전문적으로 구현하고 테스트된 객체를 재사용할 수 있습니다.
4. 플러그 가능성 & 디버깅 용이성
➡️ 특정 객체에 문제가 발생하면 해당 객체를 교체하여 문제를 해결할 수 있습니다.
🔗 자바 인터페이스
• 추상 메서드
인터페이스 내의 모든 메서드는 기본적으로 구현을 포함하지 않는 추상 메서드입니다.
• 상수
인터페이스 내의 변수는 public, static, final입니다.
• 다중 구현 가능
자바 클래스는 여러 개의 인터페이스를 구현할 수 있어, 다중 상속의 효과를 제공합니다.
• 인터페이스와 추상 클래스의 차이점
인터페이스는 상태(필드)와 생성자를 가질 수 없지만, 추상 클래스는 가질 수 있습니다.
🚴♂️ 예제: 자전거 클래스
public class Bicycle {
private int cadence = 0;
private int speed = 0;
private int gear = 1;
public void changeCadence(int newValue) { cadence = newValue; }
public void changeGear(int newValue) { gear = newValue; }
public void speedUp(int increment) { speed += increment; }
public void applyBrakes(int decrement) { speed -= decrement; }
public void printStates() {
System.out.println("cadence:" + cadence + " speed:" + speed + " gear:" + gear);
}
}
class BicycleDemo {
public static void main(String[] args) {
Bicycle bike1 = new Bicycle();
Bicycle bike2 = new Bicycle();
bike1.changeCadence(50);
bike1.speedUp(10);
bike1.changeGear(2);
bike1.printStates();
bike2.changeCadence(50);
bike2.speedUp(10);
bike2.changeGear(2);
bike2.changeCadence(40);
bike2.speedUp(10);
bike2.changeGear(3);
bike2.printStates();
}
}
🛠️ Call by Value vs. Call by Reference
• Call by Value (값에 의한 호출)
➡️ 자바에서 기본형(Primitive Type)은 값 자체가 복사되어 전달됩니다. 메서드 내에서 값이 변경되어도 원래 변수는 변하지 않습니다.
• Call by Reference (참조에 의한 호출)
➡️ 객체 참조 변수가 전달될 때는 참조 값(메모리 주소)이 전달됩니다. 메서드 내에서 객체의 필드를 변경하면, 호출한 곳에도 그 변경이 반영됩니다.
🏷️ 클래스, 필드, 메서드
• 클래스: 객체를 생성하고 관리하는 청사진.
• 필드(멤버 변수): 객체의 상태를 저장하는 변수.
• 메서드: 객체의 동작을 정의하는 코드 블록.
필드 선언
public class Example {
public int publicField;
private int privateField;
}
메서드 선언
public int add(int a, int b) {
return a + b;
}
🎨 메서드 오버로딩
메서드 오버로딩은 동일한 이름의 메서드를 다양한 파라미터 목록으로 정의하는 것입니다.
public int multiply(int a, int b) {
return a * b;
}
public double multiply(double a, double b) {
return a * b;
}
🌐 슈퍼클래스와 상속
• 상속: 하위 클래스는 슈퍼클래스의 속성과 메서드를 상속받습니다.
• 오버라이딩: 하위 클래스에서 슈퍼클래스의 메서드를 재정의할 수 있습니다.
🎯 생성자
클래스의 인스턴스를 초기화하는 특별한 메서드로, 객체 생성 시 호출됩니다.
public class Bicycle {
int speed;
public Bicycle(int startSpeed) {
speed = startSpeed;
}
}
🎉 이처럼 자바의 기본 개념들을 이해하면 객체 지향 프로그래밍의 강력함을 체험할 수 있습니다. 이제 직접 코드를 작성해보며 학습을 확장해 보세요! 🚀
'Java' 카테고리의 다른 글
Nested Classes, Local Classes, Anonymous Classes, and Lambda Expressions (0) | 2024.07.04 |
---|---|
Access Modifiers, Reference Types, and Abstract Classes (0) | 2024.07.03 |
자바 프로그래밍 핵심 개념 이해하기 (0) | 2024.07.01 |
C/C++ 프로그래밍 기초: 포인터, 반복문, 클래스, 그리고 Java의 데이터 타입 (2) | 2024.07.01 |
컴퓨터 디지털 논리 회로와 관련 개념 정리 (0) | 2024.06.26 |