다라다라V
article thumbnail
728x90
반응형

 

1. 💡 

자바의 클래스와 객체에 대한 설명 틀린 것은?

 

[정답] 필드는 클래스 내에서 private 보다 public으로 선언하는 것이 바람직하다.


[해설]

(p180) public 을 접근 지정자. 다른 클래스에서 활용하거나 접근할 수 있음을 선언하는 용도입니다.

 

2. 💡 

생성자에 대한 설명 틀린 것은?

 

[정답] 생성자에서는 아무 값도 리턴하지 않기 때문에 return문을 사용할 수 없다.


[해설]

(p188) 생성자에서는 어떤 값도 리턴하지 않습니다. 그러나 return 문을 사용할 수 없다는 뜻은 아닙니다. return 문은 메소드의 실행을 끝내고 호출한 곳으로 돌아가라는 명령으로, 생성자의 실행을 끝내고자 하면 생성자 코드 내 어디서든 return;문을 사용하면 됩니다.

 

3. 💡 

다음 코드 오류가있는 것은?

 

[정답] Power p[10] = new Power[10]; 


[해설]

 

4. 💡 

다음 코드에 대해 설명하는 문항 틀린 것은?

<java />
Book[] book = new Book[10];

 

 

[정답] Book 객체가 10개 만들어진다.

 

5. 💡 

다음 중 메소드 오버로딩에 실패한 사례는?

<code />
(1) class A{ int x; void f(int a) { x = a; } int f(int b) { return x+b; } } (2) class A{ int x; void f(int a ) { x = a; } void f() { x = 0; } } (3) class A { int x; inf f() { return x; } int f(int a, int b) { return a+b; } } (4) class A { static int x=0; static int f(int a) { return a+x; } static int f() { return 3; } }

 

 

[정답] 

 

[해설]

메소드 이름과 매개변수 개수, 타입이 모두 같으므로 메소드 오버로딩이 실패한다. 리턴 타입이 다른 것은 상관이 없습니다. (자동형변환 때문)

 

 

6. 💡 

다음 코드에 대해 답하라.

<java />
class TV { private int size; private String manufacturer; public TV() { this.size = 32; this.manufacturer = "LG"; System.out.println(size +"인치 "+ manufacturer); } public TV(String manufacturer) { this.size = 32; this.manufacturer = manufacturer; System.out.println(size +"인치 "+ manufacturer); } public TV(int size, String manufacturer) { this.size = size; this.manufacturer = manufacturer; System.out.println(size +"인치 "+ manufacturer); } }

 

[정답]

(1)

<java />
class TV { int size; String manufacturer; public TV() { this(32, "LG"); } public TV(String manufacturer) { this(32, manufacturer); } public TV(int size, String manufacturer) { this.size = size; this.manufacturer = manufacturer; System.out.println(size + "인치 " + manufacturer); } }

(2)

new TV( ); →32인치 LG;
new TV("삼성"); → 32인치 삼성
(3) TV samsungTV = new TV(65, "삼성");
(4) 같은 클래스 내의 다른 생성자를 사용할 수 있다.

 

7. 💡 

다음 클래스에는 컴파일 오류가 있다. 오류 부분을 지적하고 오류를 수정할 있는 방법을 모두 제시하라. 그리고 객체 지향 프로그래밍에 가장 적합한 방법을 명하라.

 

<java />
class Person { private int age; } public class Example { public static void main(String[] args) { Person person = new Person(); person.age = 20; } }

 

[정답]

<code />
class Person { private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } } public class Example { public static void main(String[] args) { Person person = new Person(); person.setAge(20); } }


[해설]

getter와 setter 사용해서 객체 내부의 필드에 안전하게 접근해야합니다.

 

8. 💡 

다음 코드를 객체 지향 프로그래밍 관점에서 바람직한 코드로 수정하라.

 

<java />
class Power { private int kick; private int punch; } public class Example { public static void main(String[] args) { Power robot = new Power(); robot.kick = 10; robot.punch = 20; } }

 

[정답]

(1)

<java />
class Power { private int kick; private int punch; public Power(int kick, int punch) { this.kick = kick; this.punch = punch; } } public class Example { public static void main(String[] args) { Power robot = new Power(10, 20); } }

(2)

<java />
class Power { private int kick; private int punch; public void setKick(int kick) { this.kick = kick; } public void setPunch(int punch) { this.punch = punch; } } public class Example { public static void main(String[] args) { Power robot = new Power(); robot.setKick(10); robot.setPunch(20); } }

 

9. 💡 

다음은 객체 소멸에 대한 설명이다. 보기에서 빈칸에 적절한 말을 삽입하라.

자바에서는 객체를 임의로 ________ 수 없으며, 이것은 개발자에게 매우 ________ 일 이다. 참조하는  ________ 가 하나도 없는 객체를 라고 판단하고, 이를 가용 메모리로 자동 수집하는 을 ________  진행시킨다. 응용프로그램에서 자바 플랫폼에게 이 과정을 지시하고자 하면  ________ 코드를 호출하면 된다.

 

[정답] 소멸시킬, 다행한, 가비지, 가비지 컬렉션, System.gc()


[해설]

(p211)

 

10. 💡 

다음 코드가 실행될 가비지가 발생하는가? 만일 발생한다면 발생하는 위치와 과정 설명하라.

(1)

<java />
String s = null; for(int n=0; n<10; n++) { s = new String("Hello"+n); System.out.println(s); }

(2)

<java />
String a = new String("aa"); String b = a; String c = b; a = null; b = null;

 

[정답] 

 

11. 💡 

다음 클래스에서 멤버 함수의 사용이 잘못된 것은?

<java />
class StaticTest { static int a; static int getA() { return a; } int b; //① int getB() { return b; } //② int f() { return getA(); } //③ static int g() { return getB(); } //④ }

 

[정답] ④ static int g( ) { return getB(); }


[해설]

g() 함수는 static 메서드지만, getB가 static 메서드가 아니므로 오류가 발생합니다.

 

12. 💡 

다음 코드에서 잘못된 문장은?

<java />
class StaticSample { public int x; public static int y; public static int f() { return y; } ) public class UsingStatic { public static void main(String[] args) { StaticSample.x = 5; // ① StaticSample.y = 10; // ② int tmp = StaticSample.f(); // ③ StaticSample a = new StaticSample(); tmp = a.y; // ④ } }

 

[정답] ① 


[해설]

(p223) static 멤버는 객체를 생성하지 않고도 사용할 수 있는 멤버, non-static 멤버는 객체가 생길 때 마다 생기며, 다른 객체와 공유되지 않습니다. non-static 멤버는 클래스 이름으로 접근할 수 없습니다.

 

13. 💡 

다음 소스에 틀린 부분이 있는지 판단하라. 만일 있다면 수정하라.

<java />
class Test { public int f(int a, int b) { return a + b; } public static void main(String[] args) { int sum = f(2, 4); } }

 

[정답]

<java />
class Test { public static int f(int a, int b) { return a + b; } public static void main(String[] args) { int sum = f(2, 4); } }

 

 

14. 💡 

다음 코드에는 final 관련하여 3가지 잘못된 것이 있다. 잘못된 내용을 설명하라

 

<java />
final class Rect { final protected int x = 5; final public void f() { x++; System. out.print(x); } } class SpecialRect extends Rect { // SpecialRect는 Rect를상속받는다 public void f() { System.out.print(super.x); // super.x는 Rect의 x } }

 

[정답]

1. x 값은 final 이므로 수정 불가 (x++;)

2. Rect가 final 클래스이므로 상속 불가능

3. Rect의 f()가 final 이므로 오버라이딩 불가능

 

15. 💡 

가비지와 가비지 컬렉션은 표준 CC++에는 없는 자바 언어의 독특한 특성이다. 가비지란 무엇인지, 자바에서는 가비지 컬렉션이 필요한지, 가비지 컬렉션이 개발자에게 주는 장점과 단점은 무엇인지 설명하라.

 

[정답] 

16. 💡 

다음 표를 완성하라. 멤버가 4가지 접근 지정자로 각각 선언되었을 때, 같은 패키지의 클래스와 다른 패키지의 클래스에서 멤버를 접근할 있는지 O, X 표기하라

 

[정답] 

  default public protected private
같은 패키지 클래스 O O O X
다른 패키지 클래스 X O X X

 

반응형
profile

다라다라V

@DaraDaraV

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!