2. 추상화
현실세계의 클래스화
은닉화
private 변수를 이용하여 변수를 숨기고,
set...(), get...() 메소드를 이용하여 인터페이스 제공
상속
extends 키워드를 이용, 클래스 단일 상속만 지원.
implements 키워드를 이용, 인터페이스 다중상속 지원
다형성(상속이용)
overriding: 부모의 메소드에 세 메소드 추가
ride[타다]
overloading: 부모의 메소드를 덮어버림
load[싣다]
2
3. Access Modifier 어디서나 접근 하위 패키지에서 접근 같은 패키지 접근
public O O O
protected X O O
default(기본값) X X O
protected X X X
Usage Modifier class 키워드 앞 variable 앞 method 앞
static X 클래스 변수로 선언됨. 클래스 메소드로 선언됨
final 상속 불가 변경 불가 overriding 불가
abstract 객체 생성 불가 X 빈 메소드
3
4. 메소드명 기능 예제
toString() 객체의 값을 문자열로 변환 String str = obj.toString();
equals() hashCode() 를 이용하여 같은 객체인지 비교 if( obj1.equals(obs2) )
clone() 객체 복사 obj2 = obj1.clone();
finalize() 객체 제거전 항상 자동으로 호출되는 메소드
getClass() 객체의 클래스 정보를 객체로 생성
Class info = ogj.getClass();
info.getname();
info.getSuperclass();
info.DeclaredField();
info.getDeclaredMethod();
4
5. 클래스명 기능 비고
String 자열 관리 고정된 문자열에 사용
StringBuilder 문자열 관리 변경이 많은 문자열에 사용. 동기화 안함
StringBuffer 문자열 관리 변경이 많은 문자열에 사용. 동기화 함
StringTokenizer 문자열을 여러 개의 토큰으로 분리함.
5
6. 타입 종류 예제
Primitive (원시형)
선얶 int a;
대입 a=10;
Array (배열)
선얶 int a[];
할당 a = new int[10];
대입 a[1] = 5;
Reference (클래스)
정의
class Person{
public int a;
}
선얶 Person p1;
할당 p1=new Person();
대입 p1.a = 5;
6
7. 종류 type size 값의 범위 예제
문자 char 2 유니코드 1문자
char c = 'a';
char c = '한';
char c = 'n';
char c = 'uAAAA'
정수
byte 1 -27 ~ 27 -1 -128 ~ 127 byte b = (byte)5;
short 2 -215 ~ 215 -1 -32768 ~32767 short s = (short)30000;
int 4 -231 ~ 231 - 1 약 -21억 ~ 21억 int i = 1234567890;
long 8 -263 ~ 263 -1 약 922경 ~ 922경 long l = 1234567890123L
실수
float 4 float f = 3.14f;
double 8
double d = 3.14;
double d = 3.14d;
논리 boolean 1
boolean b = true;
boolean b = false;
자동 형변환
byte -> short,char -> int -> long -> float -> double
7
8. 변환 코드 예제
원시형->객체 new 랩퍼클래스(원시형) Byte B = new Byte(b);
객체->원시형 객체.xxxValue() byte b = B.byteValue();
문자열->원시형 랩퍼클래스.parseXXX(문자열) int I = Integer.parseInt("123");
문자열->객체
랩퍼클래스.valueOf(문자열)
new 랩퍼클래스(문자열)
Integer I = Integer.valueOf("123");
Integer I = new Integer("123");
객체->문자열 객체.toString() String s = I.toString();
Primitive byte short char int long float double boolean
Wrapper Byte Short Character Integer Long Float Double Boolean
Boxing & UnBoxing
boxing: 원시형 -> 객체
unboxing: 객체 -> 원시형
8
9. try-catch-finally
finally: 예외발생 여부에 관계없이 항상 실행
catch: 상위 예외가 앞쪽에 오도록 순서 유지
catch(Exception e){ }
throws : 예외 발생시 호출한 곳으로 예외 전달
void a() throws Exception{}
class c throws Exception{}
throw: 강제로 예외 발생
void a(){ throw new Exception(); }
9
12. Object
String, StringBuffer, StringBuilder
Math
Date, Calendar, GregorianCalendar, Thread
SimpleDateFormat, DecimalFormat, Formatter
12
13. switch(변수) 에서 변수에 사용가능한 변수타입
byte, char, short, int
static import 키워드
Static 클래스, 변수등의 패키지명 생략
import static java.lang.Math.*;
import static java.lang.System.out;
enum 키워드
기존 방식과 enum 사용방식 비교
13
기존코드 enum 사용코드
선얶
public class Gender{
public static final int MALE=1;
public static final int FEMALE=2;
}
public enum Gender{
MALE, FEMALE
}
사용
void printGender( int g )
switch(g)
case Gender.MALE: ~~~~~~
case Gender.FEMALE: ~~~~~~
}
void printGender( Gender g )
switch(g)
case MALE: ~~~~~
case FEMALE: ~~~~~
}