Question 5 : 클래스의 형변환

Given:
10. interface Foo {}
11. class Alpha implements Foo { }
12. class Beta extends Alpha {}
13. class Delta extends Beta {
14.      public static void main( String[] args) {
15.           Beta x = new Beta();
16.           // insert code here
17.      }
18. }

Which code, inserted at line 16, will cause a java.lang.ClassCastException?

A. Alpha a = x;
B. Foo f= (Delta)x;
C. Foo f= (Alpha)x;
D. Beta b = (Beta)(Alpha)x;

[Head First Java - p.263]
# 클래스를 만들 때 인스턴스를 만들 수 없게 하고 싶다면(즉, 그 클래스 유형의 객체를 만들 수 없게 하고 싶다면) abstract 키워드를 사용하면 됩니다.
# 추상 클래스에는 추상 메소드와 추상 메소드가 아닌 메소드를 모두 집어넣을 수 있습니다.
# 클래스에 추상 메소드가 하나라도 있으면 그 클래스는 추상 클래스로 지정해야 합니다.
# 추상 메소드에는 본체가 없으며 선언 부분은 세미콜론으로 끝납니다(중괄호를 쓰지 않습니다).
# 상속 트리에서 처음으로 나오는 구상 클래스에서는 반드시 모든 추상 메소드를 구현해야 합니다.
# 자바에 들어있는 모든 클래스는 직접 또는 간접적으로 Object(java.lang.Object)의 하위클래스입니다.
# 메소드를 선언할 때 인자, 리턴 유형을 Object로 지정해도 됩니다.
# 어떤 객체에 대해서 메소드를 호출하려면 그 객체를 참조하는 레퍼런스 변수 유형의 클래스(또는 인터페이스)에 그 메소드가 있어야만 합니다. 객체의 실제 유형하고는 무관합니다. 따라서 Object 유형의 레퍼런스 변수로는 Object 클래스에 정의되어 있는 메소드만 호출할 수 있습니다. (레퍼런스가 참조하는 객체의 유형과는 무관합니다.)
# Object 유형의 레퍼런스 변수는 캐스팅을 하지 않고는 다른 유형의 레페런스에 대입할 수 없습니다. 한 유형의 레퍼런스 변수를 하위 유형의 레퍼런스 변수에 대입하고 싶다면 캐스팅을 이용할 수 있습니다. 하지만 힙에 들어있는 객체가 캐스팅 호환 가능한 유형이 아니라면 실행 중에 캐스팅에 실패할 수도 있습니다.

[Internet]
http://blog.naver.com/sjmpropose?Redirect=Log&logNo=44466628
객체 형변환, 상속 관계에서의 생성자

http://raoo.tistory.com/entry/추상클래스와-클래스-형변환에-대한-간단한-예제
추상클래스와 클래스 형변환에 대한 예제

Answer: B
반응형

'잘난놈되기 > SCJP' 카테고리의 다른 글

Q007. 접근제어자  (0) 2008.03.25
Q006. Format 클래스  (0) 2008.03.24
Q004. 예외처리  (0) 2008.03.23
Q003. 실행문  (0) 2008.03.23
Q002. 실행문  (0) 2008.03.23

Question 4 : 예외처리

Given:
31. // some code here
32. try {
33.      // some code here
34. } catch (SomeException se) {
35.      // some code here
36. } finally {
37.      // some code here
38. }

Under which three circumstances will the code on line 37 be executed? (Choose three.)

A. The instance gets garbage collected.
B. The code on line 33 throws an exception.
C. The code on line 35 throws an exception.
D. The code on line 31 throws an exception.
E. The code on line 33 executes successfully.

[Head First Java - p.355]
# try/catch 블록은 호출할 메소드에서 예외와 관련된 일이 일어날 수 있다는 것을 알고 있음을, 그리고 그런 예외를 처리할 준비가 되어있음을 컴파일러에게 알려주는 역할을 합니다. 컴파일러에서는 프로그래머가 그 예외를 처리하는 구체적인 방법에 대해서는 신경쓰지 않습니다. 그냥 그런 예외를 처리할 것이라는 것만 밝혀주면 불평을 늘어놓지 않습니다.
# try {
      some code...
   } catch (xxException ex) {
      some code...
   } fially {
      some code...
   }
# try 블록이 실패하면, 즉 예외가 발생하면 흐름 제어가 바로 catch 블록으로 넘어갑니다. catch 블록이 종료되면 finally 블록이 실행된다. finally 블록이 종료되면 그 메소드의 나머지 부분이 실행됩니다.
# try 블록이 성공하면, 즉 예외가 발생하지 않으면 catch 블록은 건너뛰고 finally 블록으로 넘어갑니다. finally 블록이 종료되면 그 메소드의 나머지 부분이 실행됩니다.


Answer: BCE
반응형

'잘난놈되기 > SCJP' 카테고리의 다른 글

Q006. Format 클래스  (0) 2008.03.24
Q005. 클래스의 형변환  (0) 2008.03.23
Q003. 실행문  (0) 2008.03.23
Q002. 실행문  (0) 2008.03.23
Q001. 인터페이스의 상수선언  (0) 2008.03.23

Question 3 : 실행문

Given:
11. public class Test {
12.      public static void main(String [] args) {
13.           int x =5;
14.           boolean b1 = true;
15.           boolean b2 = false;
16.
17.           if((x==4) && !b2)
18.                System.out.print(”1 “);
19.           System.out.print(”2 “);
20.           if ((b2 = true) && b1)
21.                System.out.print(”3 “);
22.      }
23. }

What is the result?

A. 2
B. 3
C. 1 2
D. 2 3
E. 1 2 3
F. Compilation fails.
G. Au exceptional is thrown at runtime.

[Head First Java - p.44]
#Java에서는 부울과 정수가 호환되지 않는다. 조건 테스트 결과는 반드시 부울이어야 한다.

Answer: D
반응형

'잘난놈되기 > SCJP' 카테고리의 다른 글

Q005. 클래스의 형변환  (0) 2008.03.23
Q004. 예외처리  (0) 2008.03.23
Q002. 실행문  (0) 2008.03.23
Q001. 인터페이스의 상수선언  (0) 2008.03.23
SCJP 취득하자  (0) 2008.03.23

Question 2 : 실행문

Given:
10. public class Bar {
11.      static void foo(int...x) {
12.      // insert code here
13.      }
14. }

Which two code fragments, inserted independently at line 12,
will allow the class to compile? (Choose two.)

A. foreach(x) System.out.println(z);
B. for(int z : x) System.out.println(z);
C. while(x.hasNext()) System.out.println(x.next());
D. for(int i=0; i< x.length; i++) System.out.println(x[i]);


[Head First Java - p.44]
#순환문 : Java는 다음 3가지 반복문이 있다. (for,while, do-while)

[Internet]
http://blog.naver.com/thtlsgkrtod?Redirect=Log&logNo=40038750517
Java 1.5에서 추가된 기능 : '확장for'문

http://cafe.naver.com/javafull.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=40
- 여러개체가 모여 있는 경우에 개체의 끝을 체크하지 않고 하나씩 차례 대로 접근할수 있다.
- 기본형태
     for(데이터형 접근 변수명 : 배열이나 컬렉션 변수명){}

http://www.zxcasd.pe.kr/tt/102
확장for문에 대해서 정말 잘 정리한 내용


Answer: BD
반응형

'잘난놈되기 > SCJP' 카테고리의 다른 글

Q005. 클래스의 형변환  (0) 2008.03.23
Q004. 예외처리  (0) 2008.03.23
Q003. 실행문  (0) 2008.03.23
Q001. 인터페이스의 상수선언  (0) 2008.03.23
SCJP 취득하자  (0) 2008.03.23

Question 1 : 인터페이스의 상수선언

Given:
11. public interface Status {
12. /* insert code here */ int MY_VALUE = 10;
13. }

Which three are valid on line 12? (Choose three.)

A. final
B. static
C. native
D. public
E. private
F. abstract
G. protected

[Head First Java - p.258]
# 자바의 인터페이스는 다중 상속의 다형적인 장점을 대부분 누릴 수 있게 해 준다.
# 모든 메소드를 추상 메소드로 만든다. 그러면, 하위클래스에서 반드시 메소드를 구현해야하므로(추상 메소드는 첫번째 구상 하위클래스에서 반드시 구현해야함) 실행 중에 JVM에서 상속받은 두 가지 버전 중에 어떤 것을 호출해야 할지 결정 못하는 문제가 생길 수 없다.
# 인터페이스 정의
     public interface Pet {
          public abstract void play();
          ...
     }
# 인터페이스 구현
     public class Dog extends Canine implements Pet {
          public void play() {...}
          ...
     }

[Internet]
//interface의 형태
public interface 인터페이스_이름 {
     public 메서드_이름(인자들);
     public static final 멤버상수_이름;
}

Answer: ABD
반응형

'잘난놈되기 > SCJP' 카테고리의 다른 글

Q005. 클래스의 형변환  (0) 2008.03.23
Q004. 예외처리  (0) 2008.03.23
Q003. 실행문  (0) 2008.03.23
Q002. 실행문  (0) 2008.03.23
SCJP 취득하자  (0) 2008.03.23

자격증 수집병... 한동안 잠잠했었는데,
기술사를 준비하기로 하면서 SCJP도 하나 취득하고 싶어졌다.
기술사에 앞서서 일단 SCJP부터 취득해보련다.

시간이 그리 많지 않은 관계로 덤프 분석으로 준비과정을 가져가려고 한다.

조금은 시간이 더 걸릴지도 모르겠지만, 뭐... 그냥 남는 시간에 하는 것이니깐...

우히히히
반응형

'잘난놈되기 > SCJP' 카테고리의 다른 글

Q005. 클래스의 형변환  (0) 2008.03.23
Q004. 예외처리  (0) 2008.03.23
Q003. 실행문  (0) 2008.03.23
Q002. 실행문  (0) 2008.03.23
Q001. 인터페이스의 상수선언  (0) 2008.03.23

+ Recent posts