22.11.04 JAVA 객체지향 생성자, 내부 클래스
종합퀴즈.. 틀렸다.. 꼼꼼히 한다고 했는데ㅠㅠㅠㅠㅠㅠ 다시 보니 있네 하..속상해
그래도 매일 아침 일찍 일어나서 일과 마치고 저녁먹고 산책도 하고 오히려 엄청 규칙적인 삶을 살고 있다는 게 다행이다
블로깅 할때 편하게 써라 라고 하셨지만 막상 이걸로 내 문제 해결 접근법을 볼 수 있다고 하니 편하게 안써지네요..
그냥 누가 볼 거란 생각 없이 내가 나중에 볼 요량으로 대충대충 끄적끄적 해놓았는데 문제 해결 접근법을 이걸로..?
깔끔하게 보기 좋게 써야하는데 부담스럽다 이건.. 다듬어가보는걸로..
종류 선언 위치 사용 가능한 변수
인스턴스 내부 클래스 (instance inner class) |
외부 클래스의 멤버변수 선언위치에 선언(멤버 내부 클래스) | 외부 인스턴스 변수, 외부 전역 변수 |
정적 내부 클래스(static inner class) | 외부 클래스의 멤버변수 선언위치에 선언(멤버 내부 클래스) | 외부 전역 변수, (외부 인스턴스x) 정적 멤버 아니면 못불러와 |
지역 내부 클래스(local inner class) | 외부 클래스의 메서드나 초기화블럭 안에 선언 | 외부 인스턴스 변수, 외부 전역 변수 |
익명 내부 클래스 (anonymous inner class) |
클래스의 선언과 객체의 생성을 동시에 하는 일회용 익명 클래스 | 외부 인스턴스 변수, 외부 전역 변수 |
인스턴스 내부 클래스는 반드시 외부 클래스를 생성한 이후에 사용한다? 외부클래스 객체 생성하고나서 사용해야한다는 의미인듯 싶다. 따라서 정적 메서드와 정적 변수는 인스턴스 내부 클래스에서 선언 불가. 접근이랑은 별개로..
외부클래스 객체 생성하지 않고 정적 이너 클래스의 객체를 생성해서 정적 메서드나 정적 변수 사용 가능.
기본적으로 클래스 없이 객체 생성은 불가.
동일한 클래스로 만든 객체는 같은 메서드 값을 공유하며, 메서드는 최초에 클래스 영역에 선언.
this 키워드는 인스턴스가 자기 자신을 가리킬 때 사용되므로 클래스 메서드 안에서는 사용 불가.
타 클래스의 객체 생성했을 때 그 타 클래스 생성자 내용에 출력내용이 있으면 그게 출력된다. 호출처럼.
이해 안되는게 멤버 내부 클래스에서 정적 이너 클래스 부분 static 붙은 클래스 멤버는 인스턴스 생성 없이도 클래스명.멤버명 으로 사용 가능하댔는데..? 왜 정적 이너 클래스는 객체 생성안하면 정적 메서드 사용 불가능하지..?
라고 생각했으나 내가 잘못본거였다. 그 클래스가 스태틱인건 맞는데 그 내부의 호출하는 함수는 인스턴스라 객체 생성 필요했던..분명 질문하기 전에 몇번이나 다시 봤을땐 이해 안되었는데 이게 무슨일이람?!