Notice
Recent Posts
Recent Comments
Link
forest_moon
[Java] 자바, 객체지향 레퍼런스와 static 본문
1. 레퍼런스 변수
레퍼런스(reference) 변수는 객체를 가리킨다.
엄밀히 말하면 객체의 주소 정보를 담고 있다.
// 객체 생성 후, 그 객체의 주소를 marine1 변수에 저장. 그 객체를 Marine 타입 으로 해석.
Marine marine1 = new Marine("레이너", 80);
// marine1 주소의 객체이 접근하여, stimpack() 동작을 실행
marine1.stimpack();
2. 기본형 변수와의 차이
표기 방식
레퍼런스 형은 대문자로 시작한다. 이와 반면, 원시형 변수는 소문자로 시작한다.
저장 방식
레퍼런스 변수는 객체를 간접적으로 저장한다. 어떻게? 객체의 주소를 저장함으로써.
기본형(primitive) 변수는 값을 직접 저장한다.
int score = 88;
double weight = 73.6;
boolean isMale = true;
char alphabet = 'A';
객체도 변수에 담으면 ?
객체는 하나의 변수에 담기에 너무 크다. 뿐만 아니라 그 크기가 유동적이다. 때문에 자바는 객체 접근을 위해 어드레싱(addresing) 방식 즉, 주소지를 통한 접근 방식을 취한다.
3. static 키워드
무엇?
static은 “공유”라는 개념을 담은 키워드이다. static은 클래스의 필드와 메소드에 적용될 수 있다. static 필드는 클래스 변수, static 메소드는 클래스 메소드라 부른다.
클래스 변수 vs 인스턴스 변수
클래스 변수(static 필드)는 클래스 영역에 존재한다. 객체 외부에 존재하므로 여러 객체가 공유에 좋다.
이와 반대로 non-static 필드는 “인스턴스 변수”라 부른다. 인스턴스 변수는 각 객체 내부에 존재한다.
클래스 변수와 인스턴수 변수 선언 예.
public class Main {
public static void main(String[] args) {
Student std0 = new Student(2019122104, "Park");
Student std1 = new Student(2019206028, "Kim");
Student std2 = new Student(2019153237, "Lee");
}
}
class Student {
// 클래스 변수
static int count = 0;
// 인스턴스 변수
int id;
String name;
// 생성자
Student (int i, String s) {
id = i;
name = str;
count++;
}
}
클래스 메소드 vs 인스턴스 메소드
클래스 메소드(static 메소드)는 주체 객체 없이 실행된다. 간편한 기능 구현에 좋다.
// Math의 static 메소드 random()을 호출
double rand = Math.random();
// 인스턴스 메소드를 수행하려면 먼저, 주체 객체가 생성되야 한다.
Student std4 = new Student(2007122104, "Choi");
// std4 변수에 연결된 객체가 주체가 되어, 인스턴스 메소드를 수행
std4.study();
요약 하자면 !
레퍼런스 변수
- 레퍼런스 변수란, 객체를 가리키는 변수다.
- 기본형 변수는 값을 직접 저장하나, 레퍼런스 변수는 객체의 위치를 가리킨다.
static 키워드
- static 키워드는 필드와 메소드에 적용될 수 있다.
클래스 변수
- 클래스 변수란, 클래스 영역에 존재한다.
- 인스턴스 변수란, 객체 내부에 존재한다.
인스턴스 변수
- 클래스 메소드란, 주체 객체가 없이 수행되는 메소드다.
- 인스턴스 메소드란, 주체 객체가 실행하는 메소드다.
'JAVA > inflearn정리' 카테고리의 다른 글
[Java] 자바, 객체지향! 자바 API (0) | 2023.04.18 |
---|---|
[Java] 자바, 객체지향! 접근 제한자와 게터 세터 (0) | 2023.04.17 |
[Java] 자바, 객체지향 프로그래밍.클래스와 객체 (0) | 2023.04.05 |
[Java] 자바, 입문하기! 반복문과 배열 (0) | 2023.04.02 |
[Java] 자바, 입문하기! 조건문 (0) | 2023.04.02 |