Skip to content

Latest commit

 

History

History
58 lines (53 loc) · 4.51 KB

File metadata and controls

58 lines (53 loc) · 4.51 KB

1. 인스턴스화와 생성자 함수

  • 클래스로 객체를 생성하는 작업을 인스턴스화라고 부른다.
  • 인스턴스화된 객체(인스턴스)는 생성할 때마다 새로운 heap 메모리 공간을 차지.
  • 인슽넌스화하기 위해서는 생성자 함수르 사용한다.
  • 생성자 함수는 클래스를 객체로 만들어주는(인스턴스화 해주는)역할.
    (객체안의 속성들을 초기화해주는 역할)
  • 기본 생성자, 단일 속성 생성자, 모든 속성 생성자 등 다양한 생성자를 사용할 수 있다.
  • 기본 생성자는 클래스내에 따로 정의를 하지 않아도 사용가능. 다른 생성자들은 클래스내에 정의가 되어있어야 사용가능.
  • 기본 생성자를 제외한 다른 생성자를 정의할 때는 기본 생성자도 함께 정의해야 된다.

2. 기본 생성자

  • 기본 생성자는 클래스를 생성하면 자동으로 만들어지는 생성자
  • 형태 : public 클래스명()
    {
    //속성값의 초기화
    }
    //생성자의 사용
    클래스명 변수명 = new 클래스명();
  • 생성자를 사용할 때는 항상 new 키워드를 함께 사용한다.

3. 매개변수를 가지고 있는 생성자

  • 매개변수를 한 개부터 여러개 가질 수 있고 매개변수의 역할을 속성 값을 초기화해주는 역할이다.
  • 매개변수가 있는 생성자를 정의할 때 매개변수 명은 멤버변수의 이름과 비슷하거나 동일하게 만든다.
  • 형태
    public 클래스명(자료형 변수명....)
    {
    //속성값 초기화
    }
  • 대부분 매개변수의 최대개수는 속성(멤버변수)의 개수와 일치시킨다.

4. static

  • static 으로 선언된 변수, 메소드와 전역변수는 static 메모리 영역에 저장됨
  • static 메모리에 저장된 변수나 메소드는 GC의 영향을 받지않고 프로그램 시작부터 종료까지 계속 남아있음.
  • static 키워드로 생성되는 변수나 메서드는 jre의 클래스 로더가 클래스를 읽어들일 때 바로 메모리에 저장. 그래서 객체를 만들지 않고도 변수나 메서드를 바로 사용할 수 있다.
  • static은 꼭 사용해야 하는 경우에만 사용해야 된다.
    클래스 간의 같은 값을 갖는 변수를 공유해야 할 때 static 멤버변수나 메서드를 이용해서 공유

5. 변수의 유효범위

  • 변수는 유효범위에 따라 지역변수, 전역변수, static멤버변수로 나눌 수 있다.
  • 지역변수는 {} 블록 안에서 선언된 변수. 제어문의 블록이나 메서드의 블록안에서 선언되기 때문에 소속되어 있는 블록 밖에서는 사용할 수 없는 변수. 지역변수는 stack 메모리 영역에 저장되고 호출되는 블록이 종료될 시 GC에 의해 메모리에서 삭제된다.
  • 지역변수로 선언된 변수가 속해있는 블록보다 레벨이 낮은 블록에서는 사용할 수 있다. ex) public int add(int a, int b) {
    //for문은 add보다 레벨낮은 블록
    for(int i = 0; i < 10; i++)
    {
    //add보다 레벨이 낮으므로 add의 지역변수인 a, b를 사용할 수 있다.
    }
    }
  • 멤버변수는 클래스내에서 사용가능한 변수. 멤버변수는 객체가 생성될 때(인스턴스화 될 때) 객체와 함께 heap 메모리에 저장. 객체가 삭제될때까지 객체내에서 자유롭게 사용할 수 있다. 맴버변수의 유효범위는 선언된 클래스 내부.
  • 전역변수(static)는 클래스안의 모든 메서드에서 사용 가능. 멤버변수는 전역변수라고 볼 수 있다. 클래스 내부에서 자유롭게 사용할 수 있기 때문이다.
  • static변수는 프로그램이 구동될 때 어디서든지 사용할 수 있는 변수. 너무 많은 static변수를 생성하면 메모리 누수가 발생할 수 있다.

6. 싱글톤 패턴

  • 두개 이상 객체(인스턴스) 생성 시에 각각의 메모리 공간에 각각의 객체(인스턴스)가 저장되던 기존 방식과는 다르게 하나의 객체(인스턴스)만을 생성해서 사용하는 방식 ex) Student s1 = new Student(); Student s2 = new Student(); s1, s2 모두 동일한 객체(인스턴스)를 사용하도록 만드는 방식
  • 싱글톤 방식의 장점은 대규모의 프로젝트에서는 매우 많은 클래스가 존재하는데 이 클래스들을 모두 인스턴스화 하여 사용할 시 많은 메모리가 소비되는데 싱글톤 방식으로 사용하게 되면 메모리 절약 및 메모리 효율을 늘릴 수 있다.