Android 2011. 8. 22. 11:24
리스트 뷰를 사용하다 보면 Activity를 상속받을 때도 있고 ListActivity를 상속 받을 때도 있습니다. 

그냥 Activity를 상속 받은 곳이라면 해당 xml 에 ListView 의 id를 android:id="@+id/아무거나"

이런식으로 리스트뷰를 구분할 수 있는 임의의 아이디를 생성하여 사용할 수 있지만,

ListActivity 를 상속받은 곳이라면 이 아이디가 android:id="@android:id/list"   로 잡아주셔야 합니다. 

@는 참조를 의미하는데 @android는 안드로이드 패키지를 참조한다는 뜻으로  

@+id/list 이런식으로 아이디를 새로 만든다는 뜻이 아닌

기존에 있는 android.jar 파일의 list 아이디를 사용한다는 의미 입니다 .

사용방법도 다른데요 ,

android:id="@+id/ListView"  는 소스에서 R.id.ListView  이렇게 찾아 사용하지만 

android:id="android:id/list" 는  android.R.id.list 이렇게 써주어야만 연결이 됩니다.
posted by 젊은쎄오
:
JAVA 2011. 8. 19. 00:35
자바에서는 다중 상속을 허용하지 않습니다. 하지만 간혹 이미 다른 클래스를 상속받은 

서브클래스들의 필요한 부분을 모아 따로 슈퍼 클래스를 선언해야 할 상황이 있습니다.



그림과 같이 단행본 클래스와 부록 CD 클래스의 공통적인 기능을 추출하여 인터페이스로 만들 수 

있습니다. 다만 주의 할 점은 공통적인 기능(매소드)은 추출 할 수 있지만 , 공통적인 데이터는 

표현 할 수 없다는 제약이 있습니다. 

저렇게 추출한 인터페이스를 소스로 옮겨보면 


이렇게 됩니다, 클래스 선언과 비슷하지만 class 대신 interface 를 써서 선언합니다. 매소드의 로직은 

구상할 필요가 없는데 인터페이스에 속하는 매소드들은 무조건 추상 매소드로 선언해야 하기 

때문입니다.

이제 이걸 자세히 알아보기 위해 책 대여 클래스와 CD대여 클래스를 만들어 이 둘이 공통으로 쓰는 

기능을 인터페이스하여 어떻게 오버라이딩하는지 알아보겠습니다 


먼저 책 대여 클래스인데요, 번호, 책이름, 저자, 대출인, 대출일, 대출 상태등이 있습니다 

생성자로 먼저 번호와 책이름 , 저자를 받아놓고 checkOut 매소드를 오버라이딩하여 

여기에 실려 넘어오는 대출인과 대출일, 대출 상태등을 담아놓은 후 누가 언제 뭘 빌려갔다라고 

찍습니다.  반대로 checkIn 을 호출하면 대출인과 대출일을 null로 바꾸고 대출상태도 0으로 바꿉니다


이제 시디 대여 클래스인데 얘는 CDInfo 라는 클래스를  이미 상속 받고 있습니다 .


CDInfo는 별거 없고 , 단지 시디 관련 번호와 시디 제목을 담아 놓습니다.

다시 시디 대여 클래스로 가보면 생성자로 시디 번호와 시디 타이틀을 받아 슈퍼클래스인 

CDInfo에 담아 놓습니다. checkOut 과 checkIn은 책 대여 클래스와 기능이 동일합니다. 

단지 책 제목이냐 시디 제목이냐가 다른데요,



 

이제 이것을 실행 해 보면



이렇게 찍히게 됩니다. 

이처럼 라이브러리는 이미 다른 상속을 받고있는 서브 클래스라 하더라도 비슷한 기능을 추출하여

안에 그 기능을 추상 매소드로 만들어 놓음으로써 필요한 클래스들이 얼마든지 implements 하여

오버라이딩 할 수 있다는 장점이 있습니다. 









출판사 : 한빛미디어 , 저자 : 김윤명 님의 뇌를 자극하는 Java프로그래밍에서 공부한 내용입니다. 

'JAVA' 카테고리의 다른 글

JAVA] 현재 날짜, 시간 구하기  (1) 2011.11.30
JAVA] split으로 문자열 나누기  (0) 2011.10.17
JAVA] drawRect 속성 알아보기  (1) 2011.08.18
JAVA] String 원하는 만큼 잘라내기  (0) 2011.08.04
JAVA] 21. 클래스의 상속  (0) 2011.06.22
posted by 젊은쎄오
:
JAVA 2011. 8. 18. 18:11



아 생각보다 헷갈리네요 ..ㅠ 

중요한건 두가지가 모여서 점하나를 찍는거고 right 와 bottom은 left와 top 값 까지 더해서

값을 주셔야 합니다. 그림과 같이 시작점은 같거든요,

마지막 Paint는 저보다 더 잘 아시겠지만 paint.setColor(Color.RED) 나 paint.setTextSize등 

그릴 것의 속성입니다.  paint.setColor(Color.RED) 로 윗줄에 써넣고 drawRect 을 실행했다면

빨간 사각형이 나오겠죠 ! 

'JAVA' 카테고리의 다른 글

JAVA] split으로 문자열 나누기  (0) 2011.10.17
JAVA] 22. 인터페이스 - 1  (0) 2011.08.19
JAVA] String 원하는 만큼 잘라내기  (0) 2011.08.04
JAVA] 21. 클래스의 상속  (0) 2011.06.22
JAVA] 20. 클래스의 정적 구성 요소  (0) 2011.06.17
posted by 젊은쎄오
: