본문 바로가기
카테고리 없음

Java(8) - 객체지향프로그램2

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

1. JVM 의 메모리 구조


    1) 호출스택(Call Stack) -- LIFO (Last In First Out), 후입선출
        - 메서드의 저장공간
        - 메서드가 호출되면 메서드 수행에 필요한 메모리공간을 할당받고
        - 메서드가 종료되면 사용하던 메모리를 반환함.

        - 프로그램의 시작점 main()가 시작하면서 필요한 메모리 공간을 할당함.
        - 호출 스택에서 맨 위에 있는 메서드가 현재 실행중이며, 
          아래에 있는 메서드가 바로 위에 메서드를 호출한 메서드이며 대기 상태로 있음.

    2) 힙(Heap)
        - 인스턴스가 생성되는 공간 
        - new 연산자에 의해서 생성되는 객체는 모두 여기에 생성됨.   

2. 인스턴스 생성과 힙 메모리(heap memory)


    1) 인스턴스 (instance)
        - 클래스는 객체의 속성을 정의하고, 기능을 구현하여 만들어 놓은 코드 상태.
        - 실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수값을 가지게 됨.
        - new 키워드를 사용하여 인스턴스 생성.

    2) 힙 메모리
        - 생성된 인스턴스는 동적 메모리 할당됨.
        - C, C++ 언어에서는 사용한 동적 메모리를 프로그래머가 해제시켜야 함.(free(),delete())
        - 자바에서 Gabage Collector (GC)가 주기적으로 사용하지 않는 메모리를 수거함.

3. 생성자 (constructor)
    0) 모든 클래스는 반드시 최소한 하나의 생성자가 있어야 함.
    1) 생성자 기본 문법 :   class_name([argument_list]) {statements}
    2) 객체를 생성할때 new 키워드와 함께 사용함.
    3) 생성자는 일반 함수처럼 기능을 호출하는 것이 아니고 
       객체를 생성하기 위해 new와 함께 호출됨.
    4) 객체가 생성될 때 변수나 상수를 초기화하거나 다른 초기화 기능을 수행하는 메서드를 호출함.
    5) 생성자는 반환 값이 없고, 생성자 이름은 클래스의 이름과 동일함.
    6) 대부분의 생성자는 외부에서 접근 가능하지만, 필요에 의해 private으로 선언되는 경우도 있음.
    
4. 기본 생성자 (default constructor)
    1) 클래스에는 반드시 적어도 하나 이상의 생성자는 존재해야함.
    2) 클래스에 생성자를 구현하지 않아도 new 키워드와 함께 생성자를 호출할수 있음.
    3) 클래스에 생성자가 하나도 없는 경우 컴파일러가 생성자 코드를 넣어 줌.
        public Time() {}
    4) 매개변수가 없음, 구현부가 없음.

5. 생성자 오버로딩
    1) 생성자의 매개변수의 갯수, 타입, 타입의 순서가 다른 경우
    2) 생성자의 매개변수 이름은 영향을 주지 않음.    

6. 참조 자료형 
    1) 변수 자료형 
        - 기본 자료형 : int, long, float, double ....
        - 참조 자료형 : String, Date, Student ...

    2) 클래스형으로 변수를 선언    
    3) 기본형은 사용하는 메모리의 크기가 정해져 있지만, 참조 자료형은 클래스에 따라 다름.

7. 접근 제어 지시자(access modifier)
    1) 클래스 외부에서 클래스의 멤버 변수, 메서드, 생성자를 사용할 수 있는지 여부를 지정하는 키워드
    2) private : 같은 클래스 내부에서만 접근 가능 (외부 클래스, 상속 관계의 클래스에서도 접근 불가)
    3) 아무것도 없음 (default) : 같은 패키지 내부에서만 접근 가능
    4) protected :  같은 패키지나 상속관계의 클래스에서 접근 가능하고 그 외 외부에서는 접근 불가함.
    5) public : 클래스의 외부 어디서나 접근 가능

8. 정보 은닉
    1) 객체 지향 프로그래밍에서 정보은닉은 필요한 외부에서 접근 가능한 최소한의 정보를 오픈함으로써 객체의 오류를 방지하고
        클라이언트 객체가 더 효율적으로 객체를 활용할 수 있도록 해줌.

9. 정보 은닉을 활용한 캡슐화(encapsulation)
    1) 꼭 필요한 정보와 기능만 외부에 오픈함.
    2) 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만 제공하여
        일관된 기능을 구현하게 함.

728x90
반응형

댓글