2010. 1. 31. 10:05ㆍJava
■ 클래스의 기본 구성
형식
접근_제한자 지정_예약어 class 클래서
extends 상위 클래스 implements 상위인터페이스
■ 클래스 포함 멤버
Nested Class : 중첩 클래스
Field : 데이터 저장 공간 (멤버 필드 , 클래스 안에 있는 필드를 멤버 필드다.)
Construct : 객체 생성 및 초기화 Method (객체를 생성시키고, 초기화 시키는 생성자)
Method : 특정 행위의 기술 영역
■ 클래스 사용법 과 메모리
- 객체 생성 : 클래스명 객체명 = new 생성자(매개변수);
(new : 동적 메모리 할당 연산자) -> GC heap 영역에!!! , 레퍼런스 4byte 로
- 연산자 : .(참조 연산) - 최우선 연산자
- 객체명.Field or 객체명.메소드
- 객체는 Reference 4byte , GC 영역 할당
■ 생성자 메서드
- 클래스명과 동일
- 결과형 리턴값이 없다.
- 객체 생성 시 반드시 하나의 생성자 호출
- 생성자 오버로딩
오버로딩 : 생성자가 여러가지가 있을수 있다.(매개변수의 개수 및 매개변수 자료형이 틀리다)
만약 생성자가 없을때, Jvm에서는 자동으로 default 생성자가 호출됨.
- 멤버 필드 값 초기화
- this 와 this()
■ Garbage Collection
- 더 이상 참조 받지 않는 Garbage Collection 영역의 메모리를 삭제한다.
- 어떤 공간이라도 해당 메모리를 참조하면 삭제 하지 않는다.
Garbage Collector의 호출
- System.gc();
- Low memory 상태에서 최 하위 Thread로 동작
■ 접근 제한자 와 멤버필드
- 클래스 내에 멤버에 접근을 제한하기 위한 예약어 => 은닉화 , 제약
■ 접근 제한자의 종류
- private : 하나의 클래스 내에서만 사용 가능한 멤버를 지정할 때 사용하는 제한자
- package : 동일 파일 + 동일 폴더
- protected : 동일 파일 + 동일 폴더 + 상속
- public : 객체를 가진 모든 영역
■ 멤버필드 와 멤버 메서드
멤버 필드 (Member Field)
- 형식 : 접근제한자 [지정예약어] 자료형(클래스형) 필드명 = 값;
멤버 메서드 (Member Method)
- 형식 : 접근제한자 [지정예약어] 결과형리턴값(자료형) 메서드명(매개변수들) throws 예외클래스들{
......
}
지정예약어 : static 은 static으로 지정된 곳에서만 사용할수 있데유~
■ 자기자신의 객체를 참조하는 this
this의 정의 : 클래스 내부에서 자신의 클래스를 지칭하는 객체
this()의 정의 : 생성자 내부에서 자신 클래스의 또 다른 생성자를 지칭하는 메서드
메서드의 0번째 매개변수
- 자신_클래스명 this <- this 는 예약어
- 0번째 매개변수는 표기할 수 없다.
( Exam_01_Sub this,int x , int y);
■ 공유 필드를 위한 static
static 필드 : 데이터 값의 공유를 위해 선언하는 공간(멤버필드로만 가능)
- 클래스 이름으로 접근 가능
- 객체 발생 전 메모리 할당
■ Static 초기화 영역
static 초기화 영역 : static 멤버 필드의 값을 초기화 하기 위한 영역
: 생성자에서 초기화 하지 않는다.
형식) static { 초기화 구문..}
static 메서드 : static 필드 컨트롤 목적
- this가 0번째 매개변수로 갖고 있지 않는다.
■ 상수 필드와 변수를 위한 final
-final 필드 : 상수 값을 저장하기 위한 공간으로 값이 변경될 수 없음.
- 지역변수나 멤버 필드 모두 가능
-final 메서드 : 상속 시 오버라이딩 되지 않아야 할 메서드를 지정
- 만약 overriding 하게 되면 에러 발생.
■ 기타 지정 예약어
transient : (IO) 직렬화 되지 않는 멤버 Data 지정
BufferedReader , 이름,나이 -> 파일로 저장시에 BufferedReader 는 저장시에 빼주세요!!
instanceof : 특정 클래스의 instance 여부를 체크
■ 중첩 클래스(inner Class)
- 클래스 내부에 또 다른 클래스를 가짐으로 클래스 관리의 효율을 높인 것(static 포함 불가)
- 중첩 클래스의 형식과 생성 파일
형식) class Outer{ class Inner{...}}
생성파일) Outer.class, Outer$Inner.class
- 중첩 클래스 객체 생성
Outer.Inner oi = new Outer().new Inner();
■ 정적 중첩 클래스(static Inner Class)
- 중첩 클래스 내부에 static 멤버를 포함할 수 있는 형태(Outer의 non-static 멤버 포함 불가)
- 정적 중첩 클래스의 형식과 생성파일
class Outer { static class Inner{...}}
생성파일) Outer.class, Outer$Inner.class
- 정적 중첩 클래스 객체 생성
Outer.Inner oi = new Outer.Inner();
■ 지역 중첩 클래스(local Inner Class)
- 메서드 실행 시에 사용되는 클래스를 정의한 형식으로 접근자나 지정어를 가질 수 없다.
- 지역 중첩 클래스의 형식 및 생성 파일
class Outer{
method(){ class Inner{....} }
}
생성 파일은 Outer.class, Outer$숫자Inner.class
- 객체 생성은 외부에서 할 수 없다.
■ 익명 중첩 클래스(anonymous Inner)
기존 클래스의 특정 메서드를 오버라이딩 하여 원하는 형태로 재정의 하여 사용하는 방식
외부 멤버 중 final 만 포함 할 수 있다.
익명 중첩 클래스의 형식 및 생성 파일
class Inner{...}
class Outer{method(){ new Inner(){....}}}
Outer.class , Outer$숫자.class
new Inner() 자체가 객체 생성임
■ Object 와 super
포함 Object의 단점 : 객체명의 접근
최상위 클래스 : java.lang.Object
자바에서 생략된 형태들
import, default 생성자 , this , 0번째 매개변수, toString(), Object super()
■ this() 와 super()
- this() : 자신 클래스의 또 다른 생성자 호출
- super() : 상위 클래스의 생성자 호출
■ 필드와 메서드의 상속
필드 상속과 접근자 : protected (제약어)
super 와 this 예약어를 통한 접근
- 생략 시 자동 this 인식
■ 메서드의 상속과 메서드 재정의
- 메서드 오버라이딩 : 접근자와 예외 전가 (상속에서만 나타나는 오버라이딩)
: 동일한 이름의 메서드
- 메서드 오버로딩 : 매개변수 개수와 자료형
- final 메서드의 제약
private < package < protected < pubilc
■ 다형성의 표현
다형성이란 : 부모 객체를 통해 자식 객체를 표현하는 방법
멤버 필드의 다형성 표현
- 부모 객체의 필드만 사용 가능하다.
멤버 메서드의 다형성 표현
-자식 객체의 메서드를 먼저 수행
-자식 객체에 해당 메서드가 없다면 부모 객체의 메서드 실행
abstract and interface : 둘다 클래스라는 입장에서 바라봐~~~
abstract (추상적이다)
abstract 메서드
- 메서드의 내용부가 정의 되지 않은 형태로 모델 개념의 메서드
- 반드시 오버라이딩 되어야 사용 가능
- 메서드에 abstract가 포함되면... T.T Class 도 abstract가 들어가야 한데용;
abstract 클래스
- abstract 메서드를 포함하고 있는 클래스로 다형성 표현으로 사용
- 객체를 발생시킬 수 없는 것을 제외하면 일반 클래스와 동일
interface
- abstract 클래스의 한 종류로 포함 멤버의 제약을 가짐(순수 디자인 목적)
- 다중 상속이 가능한 유일한 클래스
interface의 포함 멤버
- public static final 멤버 필드
- public abstract 멤버 메서드
- public static inner 클래스
■ 멀티 Thread 와 API
- Thread 는 뭐냥? : 시작점과 진행 그리고 종료점을 가지는 일련된 하나의 작업 흐름
Thread 생성 클래스 : Thread, Runnable
: 클래스의 상속(단일 상속), 인터페이스 상속(다중 상속) 의 형태로 존재!!!
■ Thread의 우선 순위
: 우선 순위의 제어 , 순서를 줘라
독립 Thread와 데몬 Thread
: public static void main은 주 Thread 인거야
메인과 동일하게 끝나면, Deamon - Thread 이래
안끝나면... 독립 Thread
기타 Thread APIs : java.lang 안에도 Thread가 있데유
■ 동기화 : 지역 동기화와 메서드 동기화
synchronized , synchronized(this)
■ 예외와 예외처리
- 예외 전가(throws Exception)
- 예외란 : P/G 실행 시 예상치 못한 일로 발생한 에러
- 예외 처리 관련 예약어
throw : 예외를 발생시켜라
throws : 예외를 통과 시켜라!!!
try ~ catch(XXXXException x){} finally{}
예외 처리의 용도
- 정상종료, 예외보고, 계속 실행, 대안적 결과
사용자 정의 예외
Exception Class 상속
■ Packages
- 폴더의 개념
- package 란 유사 클래스를 묶어서 관리하는 폴더의 개념
- package 선언
: 주석을 제외한 상태에서 파일의 최고 상위에 위치 (package 경로.경로.경로....)
- package 컴파일
: javac -d 저장경로 파일명.java
- 사용법
: import 및 절대경로명
■ Assertion
- 예외처리와 일맥상통 ,
- assertion 이란 : 개발시에 주로 사용
: 특정 구문 실행 시 결과를 단정지어 표현하는 방법(원하는 결과와 다를 경우 에러발생)
형식 : assert [boolean 검증] : 에러처리
java -ea | da | esa 파일명
:ea는 enable assertion
da는 disable assertion
esa는 뭘까?
지정 옵션:
- ea:클래스 , -ea:... , -ea:<package명>
■ Collection 과 APIs
- 무한 데이터 입력,LinkedList 를 좀더 공부해!! (java.util.*)
- Collection 관련 APIs : Set , Map , List (무한적으로 데이터를 받아낼수 있는 배열이다.)
Collection은 무한한 데이터를 넣을수 있는것이야!!!
자기 참조 : java.util.*
구분 : 정렬이 되느냐!!(order) , 중첩데이터를 허용하느냐 마느냐
Set : 복주머니 속의 구슬, 정렬이 안되겠죠 ~ 로또!!!(순서가 없어, 정렬이 안되)
중첩 객체 허용 안됨!!!
Map : 깃발을 꽂아 놓았데... 구분이 가능할껍니다
중첩 개체 강력 허용!!!!
Ordering은 되지 않습니다.
List : 기차!!!!!, 먼저 달려있는지 알수 있다.(Ordering이 된다. 집어 넣은순서대로)
중첩 개체 허용
Ordering 허용
Set , Map , List 의 SubClass를 API에서 찾아봅시다.
■ Wrapper 클래스들
- Class라는 클래스와 Runtime 클래스
- String 클래스
- Data 와 Calendar 클래스
- SimpleDataFormat 클래스
- StringTokenizer 클래스
- For문의 확대, Generic & Auto-boxing
Generic : ArrayList<String> al = new ArrayList();
컬렉션 타입 쓸때 따라서 쓰는 것이다
'Java' 카테고리의 다른 글
Delegate, Event , Ramda (0) | 2013.07.04 |
---|---|
Struts2 도 해보자 시작1 (0) | 2013.06.30 |
JDBC에 대해서 다시한번 보라구.. (0) | 2011.05.11 |
[기초]GUI , AWT 와 JFC ,사용하는 Event 그리고 Applet (0) | 2010.01.31 |
[기초]byte,text,file,object 입출력 과 자바 네트워크(TCP,UDP,Muticast,RMI) (0) | 2010.01.31 |
[기초]Method , Array , (0) | 2010.01.31 |
[기초] 자바 개요, JVM 메모리 , 자료형,연산자,제어문 (0) | 2010.01.31 |
놓치기 쉬운, 기본적인 사항들! (1) | 2010.01.11 |
Eclipse에 Log4E Plug-in 설치하자 (0) | 2008.05.20 |
Eclipse와 Struts 사용하기 -2 (364) | 2008.05.13 |