잃어버리기 쉬운 기본 개념.. ^^ 개발을 하면 할 수록.. 기본이.. 중요하게 느껴지지 않나요?
1. this..
객체.메서드(매개_변수들);
의미는..
(1) 해당 객체를 발생시킨 클래스 내부에서 메서드를 찾는다.
(2) 그 메서드가 static 메서드가 아니라면 0번째 매개 변수에게 객체를 대입한다.
- 0번째 매개 변수라는 것은? => 모든 매개 변수보다 우선한다는 뜻...
- 0번째 매개 변수의 표현은? => 자기_클래스명 this
클래스 내부에 있는 멤버 필드는 static 필드를 제외하고는 모두 this 객체의 접근이 생략되어 있다.
(이해가 가지 않으면.. 3번..4번.. 읽어보시면.. 이해가 가요..^^)
2. Static
: 하나의 클래스로 생성된 모든 객체가 공유하는 공유 공간
어떤 프로그래머가 은행에서 통장을 발급하고 관리하는 클래스를 만들려고 한다. 그 클래스는 통장을 발급받는 사람의 이름과 저축한 돈 그리고 이율을 관리하는 필드만을 가지고 있다. 이 클래스를 가지고 1990년부터 이 은행은 서비스를 시작했다. 우선 1990년도에 통장을 개설한 사람은 기본적으로 연 5%의 이율을 적용받았다. 대표로 aaa라는 사람의 자료를 메모리에 등재했다고 하자. 이사람은 1000원을 저축했다. 대표로 한사람만 표시했지만 시중 은행이라면 적어도 그 해에 몇 천 혹은 몇 만 명의 고객을 유치했을 것이다. 여하튼 이제 시간이 5년 흘렀다. 나라의 경기가 좋아지고 은행도 흑자 경영을 계속했다. 그래서 이제부터는 은행에서 통장을 개설하는 사람들 모두에게 이율로 7%를 적용 시켜 주겠다고 한다. 대표로 한명만 또 메모리에 등재해 보자. 이렇게 되었을 때 여러분들은 어떤 생각이 드는가? 이미 1990년도에 통장을 개설한 사람들은 호리려 그 은행에 많은 기여를 했음에도 불구하고 이율은 1995년도에 새로 통장을 개설한 사람들보다 못하다. 그래서 그런 불상사를 막기위해 1990년도에 통장을 만든 모든 사람들의 공간의 값을 0.07로 바꾸려 한다. 그런데 지금 눈앞에 보이는 것은 대표 한 명이지만 실제로른 천 명이 될지 만명이 될지 아무도 모른다. 그렇다면 그 렇게 많은 공간을 일일이 다 수정을 할 것인가? 너무 힘들다.
그래서 자바에서는 static이라는 예약어를 만들어 클래스로 만들어진 모든 객체가 공유할 수 있는 공유 공간을 만들게 되었다. (사실 자바에서 처음 만든것은 아니다.)
출처 : 열혈강의 Java Programming [294 ~ 295]
※ 응용 프로그램 실행 순서
(1) static { ... } 실행
(2) main() 메서드 실행
(3) finalize() 메서드 실행
3. 중첩 클래스
: 효율적인 관리를 위한 하나의 형식을 뿐이다. 즉, 한 사람을 관리하는 곳에서 각 사람을 구별할 기준이 필요하고 그 외 나머지 정보들을 저장할 공간이 필요하는데, 이때마다 새로운 클래스를 만들어 줘야 한다면 관리하는것은 더더욱 힘들어 진다. 따라서 프로그램에서는 하나의 대표 클래스 내에 다른 클래스를 넣어 관리할 수 있는 형식을 제공해 주었다.
<중첩 클래스 접근>
Outer 객체 1 = new Outer(); (Outer 클래스 객체 생성 방법)
Outer.Inner 객체 2 = 객체1.new Inner(); (Inner 클래스 객체 생성 방법)
※ 생성된 파일들
(1) className.class
(2) Outer.class
(3) Outer$Inner.class
댓글 없음:
댓글 쓰기