2010. 12. 7. 15:04
도브의 프로그래밍/Java
익셉션을 발생하는 추상 메소드
interface Lendable{
abstract void checkOut(String borrower, String date) throws Exception;
throw new Exception("대출불가"+bookTitle);
throws와 - 이 메소드를 불러 오는 애들은 반드시 try capture문을 지정해야한다.
메소드 시그네쳐에서 익셉션 발생한다는것을 선언 할때는 throws를 사용
throw new Exception - 실제 익셉션 객체를 만들어 발생 시킬때는 throw를 사용
변환 인터페이스
인터페이스 -> 클래스 상속 받을때는 interface implement
클래스 -> 클래스 상속은 extends
interface Transformable extends Movable { }
인터페이스 -> 인터페이스 상속은 interface extends
인터페이스가 클래스를 상속받을순 없다.
클래스 -> 인터페이스 상속 X
%가 붙으면"" 뒤에 나오는 실제값으로 대치가 된다.
System.out.printf("사각형: 위치(%d, %d) 크기(%d x %d) \n", obj.x, obj.y, obj.width, obj,height);
%d가 4개 "" 안에서는 폼을 나타내는 것이다. 값이 순차적으로 들어간다.
먼저 포맷을 정의 해 줄수 있다.
Rectangle 클래스 이용
클래스가 -> 여러개 인터페이스 다중 상속 가능
인터페이스가 -> 여러개 인터페이스 다중 상속 가능
두개의 인터페이스를 동시에 상속받는 외형변경 인터페이스
1 place maintenance
라벨클래스를 사용하는
레퍼런스 타입
프리미티브 타입(원시타입?, 기본 제공 데이터 타입)
레퍼런스 타입 - 사용자 정의 클래스타입, 자바 정의 클래스 타입(ex String, API 클래스)
레퍼런스 타입 - 열거타입, 배열타입, 인터페이스 타입, 클래스 타입
(클래스-> 객체 생성 하는 식을 생각하면 됨)
Point obj = new Point(10, 20); -> point 객체가 있는 주소값을 Point obj 변수함에 가리킨다.
@ 앳 주소 ex Point@c17164
obj2 = obj1; 레퍼런스 타입을 다른 레퍼런스 타입에 대입하면
하나의 객체를 두개의 변수가 가리키는 형태가 된다.
두개의 레퍼런스가 동일한 객체를 가리키기 때문에
의도치 않게 값을 모두 바꿔 버릴수 있다.
레퍼런스 타입 파라미터를 메소드 안에서 수정
*메소드 매개변수로 객체 타입을 넣어도 새 객체를 만들어 입력하는 것이 아니라
기존에 있는 객체(참조값이기때문에)의 값을 사용한다.
null 참조값 : 아무 데이터도 가리키지 않는 참조값
Point obj;
Point obj2 = null; <- 아무 값도 없다는 초기화
이 상태에서 obj2.메소드 객체를 실행하면 null pointer 익셉션 발생
대치성,다형성
자식 클래스가 부모 클래스를 대치 할수 있다.
supuer( , , ,) 부모 클래스 초기화값을 가져온다.
서브타입
부모 클래스의 객체가 구동하는데 자식 클래스의 객체를 대신 써도 구동된다면 자식 클래스는 부모 클래스의 서브타입이다.
상속관계에서 하위개념에 있는 것이 상위개념의 서브타입이다.
obj2 = obj1;
이 성립하려면 obj1 = obj2 같은 타입이거나, obj1이 obj2의 서브타입이어야한다.
레퍼런스 타입에 캐스트 연산자를 사용하는 방법
obj2 = (CheckingAccount) obj1;
캐스트 연산자
프리미티브 타입 - 캐스트 연산자 -> 테이터 타입이 바뀐다.
레퍼런스 타입 - 캐스트 연산자 -. 객체의 타입을 보증하는 역할만 한다. (내부 객체가 바뀌진 않는다.)
instanceof 연산자
이 객체가 어느 클래스에서 파생된 객체인지 알려준다.
(캐스트 연산 가능성을 검사 하는 연산자. 자바 키워드)
obj instanceof CheckingAccount
obj 객체가 CheckingAccount 클래스로부터 나온 객체인지 확인해준다.
열거 타입
한정된 수의 값을 표현할때 씀(상수형태)
ex) 월,화,수,목,금,토,일 ,봄,여름,가을,겨울
열거타입도 데이터 타입의 한 종류다
열거타입의 이름과
열거 타입에 속하는 값의 이름들을 정해야 한다.
인스턴스화 되어있다.
열거 타입 선언 키워드 = enum Season {SPRING, SUMMER, FAIL, WINTER} 콤마로 구분한 열거 값의 이름들
열거 타입의 변수
Season season;
열거타입 변수 사용
season = Season.SPRING;
스프링의 값이 시즌에 들어간다.
클래스 안에 클래스에 종속되어 열거 할수 있다.
클래스/인터페이스 안에 선언된 열거 타입은 그 클래스/인텊이스에 종속된다.
사용방법
seaspm = ClothingInfo.Season.SPRING;
열거타입이 속하는 클래스, 열거 타입,
values 메소드 <- 모든 열거 상수를 리턴하는 메소드
valueOf 메소드 정적메소드(static) <- 주어진 문자열에 해당하는 열거 상수를 리턴
열거 상수
enum 필드, 생성자;
final private String name;
final private String name;
Season(String name) 파라미터를 위와같이 한다.