JAVA

캡슐화, 상속, 다형성, 추상화 / 기본형, 참조형 매개변수 초간단 정리

seungmin576 2025. 1. 2. 13:47

캡슐화

 

속성(필드)와 행위(메서드)를 하나로 묶어 객체로 만든 후 실체 내부 구현 내용은 외부에서 알 수 없게 감추는 것

외부 객체에서는 캡슐화된 객체의 내부 구조를 알 수 없기 때문에 노출시켜 준 필드 혹은 메서드를 통해 접근할 수 있다.

숨기는 이유는 외부 객체에서 해당 필드와 메서드를 잘못 사용하여 객체가 변화하지 않게 하는데 있다.

접근 제어자를 사용하여 노출 시킬지 감출 지 결정

 

 

 

상속

 

객체지향 프로그래밍에는 부모 객체와 자식 객체가 존재

부모 객체는 가지고 있는 필드와 메서드를 자식 객체에 물려주어 자식 객체가 이를 사용할 수 있도록 만듦.

overriding 개념이 여기서 나옴.

  • 상속하는이유

1. 각각의 객체들을 상속 관계로 묶음으로써 객체 간의 구조를 파악하기 쉬워짐.

2. 필드와 메서드를 변경하는 경우 부모 객체에 있는 것만 수정하게 되면 자식 객체 전부 반영이 되기 때문에 일관성을 유지

3. 자식 객체가 부모 객체의 필드와 메서드를 물려받아 사용할 수 있기 때문에 코드의 중복이 줄어들어 재사용성 증가

 

 

 

다형성

 

객체가 연산을 수행할 때 하나의 행위에 대해 각 객체가 가지고 있는 고유한 특성에 따라 다른 여러가지 형태로 재구성 되는 것을 의미함.

Car 클래스를 토대로 자동차 객체를 만들 때 A 자동차와 B 자동차의 경적 소리가 다르면 경적을 울리다 라는 메서드의 구현을 다르게 재정의하여 사용할 수 있다.

 

 

 

추상화

 

객체에서 공통된 부분을 모아 상위 개념으로 새롭게 선언하는 것이다.

공통적이고 중요한 것들을 모아 객체를 모델링함.

현실세계의 여러 종류의 자동차들이 공통적으로 가지고 있는 가속, 브레이크, 속도와 같은 것들을 모아 자동차라는 객체를 모델링 할 수 있다.


 

기본형 매개변수

값 자체를 복사해서 넘겨서 원본이 영향을 안 받음.

 

 

 

참조형 매개변수

참조값(주소)을 복사해서 넘기기 때문에 원본이 영향을 받음.

class MyObject {
    int value;

    MyObject(int value) {
        this.value = value;
    }
}

public class Example {
    // 기본형 매개변수를 사용하는 메서드
    public void modifyPrimitive(int num) {
        num = 10; // num의 값만 변경
    }

    // 참조형 매개변수를 사용하는 메서드
    public void modifyObject(MyObject obj) {
        obj.value = 10; // 객체의 속성 변경
    }

    public static void main(String[] args) {
        // 기본형 매개변수 예시
        int number = 5;
        System.out.println("원본 기본형 변수: " + number); // 5 출력
        Example example = new Example();
        example.modifyPrimitive(number); // 메서드 호출
        System.out.println("변경 후 기본형 변수: " + number); // 여전히 5 출력

        // 참조형 매개변수 예시
        MyObject myObj = new MyObject(5);
        System.out.println("원본 객체의 초기 값: " + myObj.value); // 5 출력
        example.modifyObject(myObj); // 메서드 호출
        System.out.println("변경 후 객체의 값: " + myObj.value); // 10 출력
    }
}

'JAVA' 카테고리의 다른 글

String 클래스의 메소드들  (1) 2025.01.07
내배캠 자바 2주차 자료 구조 (컬렉션)  (1) 2024.12.31
인터페이스  (0) 2024.12.26
final  (2) 2024.12.26
템플릿 메서드 응용하기  (0) 2024.12.24