Upload
-
View
83
Download
1
Embed Size (px)
Citation preview
박혜웅
추상화
현실세계의 클래스화
은닉화
private 변수를 이용하여 변수를 숨기고,
set...(), get...() 메소드를 이용하여 인터페이스 제공
상속
extends 키워드를 이용, 클래스 단일 상속만 지원.
implements 키워드를 이용, 인터페이스 다중상속 지원
다형성(상속이용)
overriding: 부모의 메소드에 세 메소드 추가 ride[타다]
overloading: 부모의 메소드를 덮어버림 load[싣다]
2
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
메소드명 기능 예제
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
클래스명 기능 비고
String 자열 관리 고정된 문자열에 사용
StringBuilder 문자열 관리 변경이 많은 문자열에 사용. 동기화 안함
StringBuffer 문자열 관리 변경이 많은 문자열에 사용. 동기화 함
StringTokenizer 문자열을 여러 개의 토큰으로 분리함.
5
타입 종류 예제
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
종류 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 8double d = 3.14;double d = 3.14d;
논리 boolean 1boolean b = true;boolean b = false;
자동 형변환
byte -> short,char -> int -> long -> float -> double
7
변환 코드 예제
원시형->객체 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
try-catch-finally
finally: 예외발생 여부에 관계없이 항상 실행
catch: 상위 예외가 앞쪽에 오도록 순서 유지 catch(Exception e){ }
throws : 예외 발생시 호출한 곳으로 예외 전달 void a() throws Exception{}
class c throws Exception{}
throw: 강제로 예외 발생 void a(){ throw new Exception(); }
9
java.lang.Throwable
java.lang.Error java.lang.Exception
java.lang.RuntimeException java.io.IOException
java.lang.NullPointerException
java.lang.IndexOutOfBoundsException
10
인터페이스
주요 클래스
클래스
class Super{
void a() throws IOException{}
}
class Sub extends Super{
void a(){}
void a() throws IOException{}
void a() throws FileNotFoundException{}
void a() throws Exception{} //IOException하위클래스 아님void a() throws SQLException{} //IOException하위클래스 아님
}
java.io.IOException
java.sql.SQLException
java.lang.Exception
java.io.FileNotFoundException
11
Object
String, StringBuffer, StringBuilder
Math
Date, Calendar, GregorianCalendar, Thread
SimpleDateFormat, DecimalFormat, Formatter
12
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: ~~~~~
}