본문 바로가기
Web/Java

Java(9) - 객체지향프로그램3

by SeleniumBindingProtein 2022. 1. 28.
728x90
반응형

1. 객체 자신을 가리키는 this 
    1) 생성된 인스턴스 자신의 메모리를 가리킴 
    2) this() : 생성자에서 또 다른 생성자를 호출할때 사용
        - 클래스에 생성자가 여러 개인 경우, this()를 이용하여 생성자에서 다른 생성자를 호출.
        - 생성자에서 다른 생성자를 호출하는 경우에는 
          인스턴스 생성이 미완성인 상태이므로 다른 수행문을 쓸수 없음.
    3) 자신의 주소를 반환          

2. 객체 간의 협력(collabration)
    1) OOP에서의 협력
        - 필요한 메세지를 전송하고 이를 처리하는 기능이 구현되어야 함.
        - 매개 변수로 객체가 전달되는 경우가 발생.

3. 여러 인스턴스에서 공통으로 사용하는 변수 => static 변수 
    1) 공통으로 사용하는 변수 필요한 경우
        - 여러 인스턴스가 공유하는 기준 값이 필요한 경우
        - 학생마다 새로운 학번 생성
        - 회사에서 사원이 입사할때 새로운 사번이 필요한 경우
        - 카드회사에서 카드를 새로 발급할때마다 새로운 카드 번호를 부여
    2) 데이터 영역 메모리 
        - 공유
    3) static 변수 선언과 사용하기
        - 인스턴스가 생성될 때마다 만들어지는 변수가 아닌, 
          처음 프로그램이 로딩될때 메모리를 할당
        - 클래스 변수, 정적 변수라고도 함. (<--> 인스턴스 변수)  
        - 인스턴스 생성과 상관 없이 사용 가능하므로 클래스 이름으로 직접 참조
    4) static 메서드 구현과 활용
        - 클래스 메서드, 정적 메서드 
        - 클래스 이름으로 호출가능
        - 인스턴스 생성 전에 호출될수 있으므로 
          static 메서드 내부에서는 인스턴스 변수를 사용할수 없음.

4. 변수의 유효 범위와 메모리
    1) 변수의 유효 범위(scope)와 생성과 소멸(life cycle)은 각 변수의 종류마다 다름.
    2) 지역변수, 멤버변수, 클래스 변수는 유효범위와 life cycle, 사용하는 메모리도 다름.

    변수유형        선언위치        사용범위        메모리          생성과 소멸
    ---------------------------------------------------------------------------------
    지역변수        메서드 내부     메서드 내부      스택   함수가 호출될때 생성되고     
    (로컬변수)                                                           함수가 끝나면 소멸됨    

    멤버변수        클래스 멤버      클래스 내부      힙    인스턴스가 생성될때 힙에 생성
                            변수로                                               GC가 메모리 수거할때        선언                                                       

    static 변수     클래스 내부     클래스 내부   데이터영역   프로그램이 처음 시작할때 
    (클래스 변수)                                                                 상수와 함께 생성되고
                                                                                         프로그램이 끝나고 메모리를 해제할때 소멸됨


    3) static 변수는 프로그램이 메모리에 있는 동안 계속 그 영역을 차지하므로 
       너무 큰 메모리를 할당하는 것이 좋지 않음.


5. static 응용 -- 싱글톤 패턴(singleton pattern)
    1)싱글톤 패턴이란?
        - 프로그램에서 인스턴스가 단 한개만 생성되어야 하는 경우 사용하는 디자인 패턴
        - static 변수, 메서드를 활용하여 구현할수 있음.
    2)싱글톤 만드는 방법
        - 해당 클래스 자신의 타입으로 정적 멤버 선언과 생성
        - 해당 클래스를 외부에서 new 연산자로 인스턴스 생성못하게 생성자를 private으로 생성
        - 정적 멤버의 주소를 공유하기 위해서 외부에서 호출할수 있는 getInstance() 제공함
    3)싱글톤을 사용하는 이유
        - 단 하나의 인스턴스만 생성을 원하고자 할때 사용함.
        - ex) 사용자 환경설정(시간,날짜정보), 커넥션 풀        

728x90
반응형

'Web > Java' 카테고리의 다른 글

Java(11) - 컬렉션프레임워크  (0) 2022.01.28
Java(10) - 배열  (0) 2022.01.28
Java(7) - 객체지향프로그래밍  (0) 2022.01.28
Java(6) - review  (0) 2022.01.28
Java(5) - 반복문  (0) 2022.01.28

댓글