728x90
반응형
Object, 객체
처음 객체를 배울 떄 흔히 붕어빵에다가 많이 비유하곤 합니다 하지만 제 경우에는 이 비유가 더 어려웠습니다. 그래서 제가 이해한 객체에 대한 개념은 "설계도를 통해서 만들어진 특정 행위를 가지고 있는 것" 이라고 말씀드리고 싶습니다. "설계도"란 곧 클래스이며 "특정 행위"라는 것은 이 행위를 하기 위한 변수의 선언이나 함수의 기능들이라고 이해했습니다. 그런데 사실 코딩을 하다보면 어떤 개념보다는 그냥 코드를 통해서 이해하기가 더 쉬운 경우가 있는데 객체지향적 코딩이 바로 그런 것이라고 생각됩니다.
인스턴스 & 스태틱 변수
위에서 언급한 변수들을 다음과 같이 초기화 합시다.
인스턴스(Instance) 변수는 아래와 같이 '인스턴스화'를 시킨 뒤 호출이 가능합니다. '인스턴스화' 라는 것은 곧 '클래스'를 가지고 '객체화'를 시킨다 라는 의미를 가지고 있습니다.
반대로 스태틱 변수는 '인스턴스화' 없이 호출이 가능합니다. 바로 '클래스명.스태틱변수' 와 같이 호출합니다.
인스턴스 & 스태틱 메소드
인스턴스 메소드의 호출 개념은 인스턴스 변수와 같습니다. 인스턴스 메소드도 '인스턴스화'를 시킨 후 호출이 가능합니다.
스태틱 메소드의 호출도 스티택 변수를 사용하는 원리와 같이 '클래스명.메소드명()' 과 같이 호출이 가능합니다.
Static 변수는 공유가능
Static 변수는 공유가 가능합니다. 즉 클래스 하나를 가지고 만든 두 객체가 Static 변수의 값을 바꾸면 두 객체의 Static 변수도 변경이 됩니다. 다음과 같이 두 개의 객체를 준비합니다.
현재 Static 변수 kind에는 "소형차"라는 값으로 초기화가 되어있다고 가정해봅시다. 그랬을 경우 다음과 같이 Static 변수를 호출한 뒤 그 값을 확인하면 초기화 된 "소형차"라는 값을 보이게 됩니다.
이후에 다음과 같이 'mycar'라는 객체의 static 변수의 값을 "중형차"로 바꿔봅시다.
그후에 결과값을 확인하면 yourcar의 static 변수도 "중형차"로 바꿔져 있는 걸 확인할 수 있습니다.
728x90
반응형
'Language > Java-backup' 카테고리의 다른 글
[Java] 상속 (Inheritance) (0) | 2022.04.03 |
---|---|
[Java] 캡슐화 (Encapsulation) (0) | 2022.04.03 |
[Java] 생성자 오버로딩 (0) | 2022.04.03 |
[Java] 오버로딩 (OverLoading) (0) | 2022.04.03 |