하나의 java 파일에서 여러 개의 class를 사용 안함.(자바에서는. 관용적으로.)
main에서 System.out.println 사용x
1. 생성자(constructor)
- 하위 Class의 객체가 생성되기 위해서는 먼저 내부적으로 상위 Class의 생성자가
호출되서 부모 객체가 먼저 생성되어야한다.(부모없는 자식은 없다.)
- 생성자가 하나도 없는 경우 기본생성자가 자동으로 생성.
(기본생성자의 접근제한자는 클래스의 접근제한자와 동일)
2. OOP(Object Oriented Programing)
1) 상속성(inheritance)
2) 다형성(polymorphism).
3) 은닉성(Information Hiding)
4) 캡슐화(Encapsulation)
l 기본자바 파일의 구조.
1. 패키지 선언
2. import구문.(생략: import java.lang.*;)
3. class 선언 *Class 앞에는 접근제한자 지정가능.(Public or Default)
4. field(속성) 선언,초기화 -
5 객체의 초기화(생성자)
6. Method 선언
* Public static void main(String[]args){
실행시 제일먼저 JVM이 호출하는 메소드.
}
n 자바의 주석
1) // : 한줄주석
2) /* */ : 여러줄 주석.
3) /**
*/ : JAVA DOC = API 문서를 만들 때 쓰임.
*javadoc –d “경로” “filename.java”
n 자바의 변수
1) 변수의 Type에 따라.
1. 기본형 변수(Primitive Type) 변수(8)
존재이유 : 실행의 효율성때문.
n 정수형 : byte = 1 byte 초기값(0)-short, int도 동일
Short = 2 byte
Int = 4 byte
Long= 8 byte 초기값(0L)
n 실수형 : float = 4 byte 초기값(0.0F)
Double = 8 byte 초기값(0.0)
n 문자형 : char = 2 byte(문자 한글자)
n 논리형 : Boolean = byte 계산 안함.(true, false). 초기값(false)
* 8bit = 1byte
* 정수형과 실수형의 구분을 위해 8bit 중 맨 앞의 1bit를 부호비트로 사용.(0=정수,1=실수)
So 뒤에 7bit만 사용. But 0의 경우 정수의 경우의 수를 사용하므로.
And “0”을 기준으로 “+”와 “-“를 대칭구조로 사용.
Ex) 1 byte 일 경우 (byte) 8bit 중 7bit사용
-2의 7승 ~ + 2의 7승 -1
2. 레퍼런스형 변수(Reference Type 변수,객체형)
: 형변환 방향(위로) - 최상위인 Object – Class
초기값 : = null;, 실제로는 참조하는 객체의 주소값을 가져옴.
n 유효범위에 따라
1. 멤버변수 (Member Variable = field)
: 초기화를 하지 않아도 된다.
Ex) int I;(자동으로 0으로 초기화가 된다.)
2. 메소드 지역변수 (local Variable)
: 반드시 초기화를 해야한다.
Ex) int I = 10;
n 제한자(Modifier)
: Class, interface, 변수, method, 생성자 앞에 붙어서 기능을 제한하는 Keyword.
1) 접근제한자
1. Public : 모두 다.(다른 컴퓨터일지라도.)
2. Protected : 상속관계
3. Default : 같은 패키지.
4. Private : 같은 Class 안쪽에서만 가능.
상위 제한자는 하위제한자를 포함.
2) 수정제한자(static) : static의 有/無
3) 수정제한자.(final)
4) 추상제한자(abstract)
5) 기타(Synchronized, transient, volatile, native)
n 오버로딩과 오버라이딩.
1) 오버라이딩(Overriding)
: 상위 Class에서 정의된 Method를 하위 Class에서 재정의하는 것.
정의 : 상속관계가 있는 클래스에서 부모클래스의 메소드 내용을 자식클래스에서
재정의 하는 것
조건
- 반환타입이 같아야한다.
- 인자(parameter)의 개수나 type,순서가 모두 같아야한다.
- 부모클래스의 오버라이딩 될 메소드의 접근제한자 보다 자식클래스에서
- 재정의하는 메소드의 접근제한자의 범위가 같거나 더 커야한다,
2) 오버로딩(Overloading) : 편의성을 위해서 쓴다.
: 메소드의 이름은 같은데 인자의 개수나 Type, 순서가 다른 형태의
메소드로써 이름만 같지 별개의 메소드인 것을 말한다.
조건 : 인자(parameter)의 개수나 Type, 순서가 달라야 한다.
종류: 생성자 오버로딩, 메소드 오버로딩
n This, super
1. this : 자기자신(class)의 객체.
2. Super: 부모Clas의 객체.
“ 기본기를 충실히~ “
toString : 실체를 나타냄.
ToString
getClass().getName() + '@' + Integer.toHexString(hashCode())
hashcode를 tosting이 HexString(16진수)으로 바꿔서 출력
System.out.println(생략_toString)
= public static void pln(Object o){
System.out.println(o.toString());
System.out.println(o.hashcode());
}
:해설
pln이라는 method를 만든후 인자값을 Object로 사용{
Object 안에 toString() 호출.
Object 안에 hashcode() 호출
}
Overloading의 이유 : 편이성을 위해.
n Api 문서자체를 만들어내는.명령어.
: Javadoc –d “directory” “filename.java”
n Static : 소유제한자.
1) Static 붙으면 클래스 소속.
: static은 static 끼리만 친하다.
static 붙은 (안쪽에서는) 변수,메소드 만 사용할수있다.
2) Static 안 붙으면 객체 소속.
:
숙제)
1. 자바의 연산자.
2. 조건문 1(if, if-else).
3. 조건문 2(switch)
4. 반복문1(for)
5. 반복문2(while,do-while)
6. 제어의 이동(break,continue,return,label방식)
,Static 정리 - Static이 붙으면 공유된다고 생각하면 됨.
사용범위 : field , method…
1) Static 붙으면 클래스 소속.
: static은 static 끼리만 친하다.
static 붙은 (안쪽에서는) 변수,메소드 만 사용할수있다.
2) Static 안 붙으면 객체 소속.
-Static 이 없을 경우 객체소유이므로 객체가 없을 경우
Static값 역시 생명력이 없다.
So 사용할 때에는 객체.”static값”
Ex) non-Static 일때
ts.knife = 1;
Static 일때
knife =1;
l 객체 소유일경우 즉, static이 미존재시 객체를 만들어 소유권을 부여해줘야 함.
잡다한 것.
Method에서 parameter사용시
받아오는 인자값을 this로 지정안해주나??
이유 : this. 구분이 필요한 경우는 해당 class일때
인자값과 중복되는 field값 혹은 method값이 있을때
구분이 필요한거지. parameter 이용시 필요한 값이 아님.
'자바 기본 공부 > 기초 이론' 카테고리의 다른 글
인터페이스 복습, 배열 , 예외처리 (0) | 2009.06.23 |
---|---|
연산자 종류, 반복문, 조건문, 제어의이동, 인터페이스 개념 (0) | 2009.06.23 |
수정제한자 , 식별자 , shift 연산자 (0) | 2009.06.23 |
자바기초 - 자바실행절차, 스택과 힙. (0) | 2009.06.23 |
자바의 객체지향특징 (OOP : Object Oriented programming) (0) | 2009.06.23 |