자바

[JAVA] 클래스와 객체2

코딩하는둥이 2022. 11. 19. 17:03

자신의 메모리를 가리키는 this

 - 생성된 인스턴스 스스로를 가리키는 예약어

note: 위 코드에서 this를 생략하게 되면 name이나 age는 피라미터로 사용되는 name과 age로 인식된다.

생성자에서 다른 생성자를 호출하는 this

note: this를 이용하여 다른 생성자를 호출할 때는 그 이전에 어떠한 statement도 사용할 수 없다. 위와 같이 생성자가 여러 개의 이고 피라미터만 다른 경우 constructor overloading 이라고 한다.

객체 간의 협력

 -  학생이 버스나 지하철을 가는 상황을 객체지향으로 프로그래밍

 

Static 변수

 -  static 변수의 정의와 사용방법

    static 예약어 자료형 변수이름; 

    (static,             int,      serialNum)

 - 여러 개의 인스턴스가 같은 메모리의 값을 공유하기 위해 사용

 - 인스턴스가 생성될 때마다 다른 메모리를 사지는 것이 아니라 프로그램이 메오리에 적재(load)될 때 데이터 영역의 메모리에 생성됨

 - 따라서 인스턴스의 생성과 관계없이 클래스 이름으로 직접 참조함

   Student.serialNum = 100; //serailNum이 static변수

 - 클래스 변수라고도 함

 - 멤버변수는 다른 말로 인스턴스 변수라고 함

 

변수의 유효 범위

변수 유형 선언 위치 사용 범위 메모리 생성과 소멸
지역 변수
(로컬 변수)
함수 내부에 선언 함수 내부에서만 사용 스택 함수가 호출될 때 생성되고 함수가 끝나면 소멸함
멤버 변수
(인스턴스 변수)
클래스 멤버 변수를 선언 클래스 내부에서 사용하고 private이 아니면 참조 변수로 다은 클래스에서 사용 가능 인스턴스가 생겅될 때 힘에 생성되고, 가비지 켈렉터가 메모리를 수거할 때 소멸됨
static 변수
(클래스 변수)
static 예약어를 사용하여 클래스 내부에 선언 클래스 내부에서 사용하고 private이 아니면 클래스 이름으로 다른 클래스에서 사용 가능 데이터 영역 프로그램이 처음 시작 할 때 상수와 함께 데이터 영역에 생성되고 프로그램이 끝나고 메모리를 해체할 때 소명됨

 

Static 응용 : singleton 패턴

 - 전 시스템에 단 하나의 인스턴스만이 존재하도록 구현하는 방식

   1) 자바는 글로벌 병수가 없다  -> static 변수 사용

   2) 생성자가 없으면 publiuc default 생성자가 생성된다. -> 생성자를 private으로 만듦

   3) 외부에서 생성된 static으로 생성된 객체를 사용할 수 있어야 한다. -> publuic으로 선언된 static  메서드 제공

       

'자바' 카테고리의 다른 글

[JAVA] 변수와 자료형  (0) 2022.11.19
[JAVA] 백준 기초공부 2  (0) 2022.11.19
[JAVA] 클래스와 객체 1  (0) 2022.11.19
[JAVA] 객체와 클래스  (0) 2022.11.19
[JAVA] 반복문  (0) 2022.11.18