본문 바로가기
개발/Java

[Java] 자바와 객체 지향 (2)

by devhooney 2022. 8. 3.
728x90

스프링 입문을 위한 자바 객체 지향의 원리와 이해를 읽고 간단한 정리.

https://devhooney.tistory.com/74

 

[Java] 자바와 객체 지향 (1)

스프링 입문을 위한 자바 객체 지향의 원리와 이해를 읽고 간단한 정리. 1. 객체 지향의 4대 특성 - 캡슐화: 정보 은닉 - 상속: 재사용 - 추상화: 모델링 - 다형성: 사용 편의 2. 클래스 : 객체 = 붕어

devhooney.tistory.com

이 포스트와 이어지는 내용

 

1. 다형성: 사용편의성

- 객체 지향에서 다형성은 오버라이딩, 오버로딩으로 대표된다.

- 오버라이딩, 오버로딩의 차이

1. 오버라이딩은 같은 메소드, 같은 인자 목록으로 상위 클래스의 메소드를 재정의

2. 오버로딩은 같은 메소 이름, 다른 인자 목록으로 다수의 메소드를 중복 정의

 

2. 캡슐화: 정보 은닉

- 자바에서 정보 은닉이라고 하면 접근 제어자가 떠오른다.

- 접근 제어자 종류

(1) private: 본인만 접근 가능

(2) default: 같은 패키지 내의 클래스에서 접근 가능

(3) protected: 상속 / 같은 패키니 내의 클래스에서 접근 가능

(4) public: 모두가 접근 가능

 

3. 참조 변수의 복사

- 기본 자료형 변수를 복사하는 경우 Call By Value(값에 의한 호출)에 의해 복사되고, 두 개의 변수는 서로에게 영향을 주지 않는다.

- 객체를 저장하고 있는 객체 참조 변수를 복사하는 경우는 Call By Reference(참조에 의한 호출) 또는 Call By Address(주소에 의한 호출)에 의해 복사된다.(이때 복사 되는 값은 같으며, 주소만 다르다.) 마치 원래 값이 바뀌는 것 처럼 보인다.

public class CallByReference {
    public static void main(String[] args) {
    	Animal ref_a = new Aninal();
        Animal ref_b = ref_a;
        
        System.out.println(ref_a); // reference.Animal015db9742 -> 실행할 때마다 달라진다.
        System.out.println(ref_b); // 위와 같다.
        
        ref_a.age = 10;
        ref_b.age = 20;
        
        System.out.println(ref_a.age); // 20
        System.out.println(ref_b.age); // 20
    }
}

- 원래 값이 바뀌는 것처럼 생각했었는데, 복사하는 값은 같고, 주소만 달라진다는 것을 알았다!

- 같은 주소를 참조하고 있기 때문에, 하나를 바꿀 경우 둘 다 바뀌는 것!

 

- 정리

(1) 기본 자료형 변수는 값을 값 자체로 판단한다.

(2) 참조 자료형 변수는 값을 주소, 즉 포인터로 판단한다.

(3) 기본 자료형 변수를 복사할 때, 참조 자료형 변수를 복사할 때 일어나는 일은 같다.

즉, 가지고 있는 값을 그대로 복사해서 넘겨 준다.

728x90

'개발 > Java' 카테고리의 다른 글

[Java] 객체 지향 설계 5원칙 - SOLID  (0) 2022.08.06
[Java] 자바가 확장한 객체 지향  (0) 2022.08.04
[Java] 자바와 객체 지향 (1)  (2) 2022.08.01
[Java] Map안에 Map 안에 List 만들기  (0) 2022.07.19
[Java] 트리  (0) 2022.07.14