Java / / 2024. 7. 3. 08:55

Interface, Superclass, and Call by Value

 

 

 

🌟 자바 프로그래밍의 핵심 개념 정리 🌟

 

🧩 객체 지향 프로그래밍 (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;
    }
}

 

🎉 이처럼 자바의 기본 개념들을 이해하면 객체 지향 프로그래밍의 강력함을 체험할 수 있습니다. 이제 직접 코드를 작성해보며 학습을 확장해 보세요! 🚀

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유