1. 자바의 클래스와 객체에 대한 설명 중 틀린 것은? - 4번
2. 생성자에 대한 설명 중 틀린 것은? - 4번
3 다음 중 코드 오류가 있는 것은? - 3번
4. 다음 코드에 대해 설명하는 문항 중 틀린 것은?
Book book[] = new Book[10];
- 2번 / book 객체가 10개 만들어진 것이 아니라, 객체를 넣기 위한 배열을 선언한 것이다. 객체 배열을 완성하기 위해서는 각 배열에 객체를 넣어주어야 한다.
5. 다음 중 메소드 오버로딩에 실패한 사례는? - 1번 / 입력받는 변수의 개수와 타입이 일치한다. 따라서 오버로딩을 할 수 없다.
6. 다음 코드에 대해 답하라.
class TV{
private int size;
private String manufacturer;
public TV() {
size = 32;
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) this()를 이용하여 생성자를 수정하라.
class TV{
private int size;
private 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();와 new TV("삼성");를 실행하면 실행 결과는 각각 무엇인가?
- 32인치 LG / 32인치 삼성
(3) 65인치 "삼성" TV 객체를 생성하는 코드를 적어라.
TV tv = new TV(65, "삼성");
(4) this()를 이용하는 장점은 무엇인가?
- 반복되는 생성자 함수를 사용할 수 있어서 중복 프로그램 재작성의 노고를 줄일 수 있다.
7. 다음 클래스에는 컴파일 오류가 있다. 오류 부분을 지적하고 오류를 수정할 수 있는 방법을 모두 제시하라. 그리고 그중 객체지향 프로그래밍에 가장 적합한 방법을 설명하라.
class Person{
private int age;
}
public class Example{
public static void main(String[] args) {
// TODO Auto-generated method stub
Person person = new Person();
aPerson.age = 17;
}
}
- Person 클래스의 age는 private으로 선언되어있어, 외부에서 호출을 하거나 값을 변경할 수 없다. 따라서 객체 지향 프로그래밍의 캡슐화를 유지하면서 필드를 사용하기 위해서는 public으로 선언된 메서드를 사용하여 거쳐가면 된다.
class Person{
private int age;
public void ageChange(int age) {
this.age = age;
}
}
public class Example{
public static void main(String[] args) {
// TODO Auto-generated method stub
Person aPerson = new Person();
aPerson.ageChange(17);
}
}
8. 다음 코드를 객체 지향 프로그래밍 관점에서 바람직한 코드로 수정하라.
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()
10. 다음 코드가 실행될 때 가비지가 발생하는가? 만일 발생했다면 발생하는 위치와 과정을 설명하라.
(1) 가비지가 발생한다. 반복문이 실행되면서 Hello1, Hello2 . . . 이렇게 String s에 대입되는 문자열이 달라지면서 이전의 문자열은 가비지가 된다.
(2) c가 "aa"를 가리키고있기 때문에 가비지가 발생하지 않는다.
11. 다음 클래스에서 멤버 함수의 사용이 잘못된 것은?
- 4번 / static 메소드는 non-static 메서드를 멤버로 가질 수 없다. 그 반대는 가능하다.
12. 다음 코드의 잘못된 문장은?
- 1번 / non-static 필드와 멤버는 클래스 이름을 통해 호출할 수 없다. 반드시 객체를 생성 후 호출해야 한다. 그 이유는 객체가 생성되어야 필드와 멤버가 생성되기 때문이다. 반면 static은 프로그램 실행과 동시에 생성되기 때문에 상관이 없다.
13. 다음 소스에 틀린 부분이 있는지 판단하라. 만일 있으면 수정하라.
class Test{
public int f(int a, int b) {
return a + b;
}
public static void main(String[] args) {
Test test = new Test();
int sum = test.f(2, 4);
}
}
14. 다음 코드에는 final과 관련하여 3가지 잘못된 것이 있다. 잘못된 내용을 설명하라.
- final로 선언된 class는 상속될 수 없고, final로 선언된 함수는 오버라이딩 될 수 없으며, final로 선언된 변수는 상수를 뜻한다. 즉 선언된 후 값을 바꿀 수 없다. 코드를 보면 x++가 있는데 이는 상수의 값을 바꾸겠다는 뜻으로 말이 되지 않는다.
15. 가비지와 가비지 컬렉션은 표준 C나 C++에는 없는 자바 언어의 독특한 특성이다. 가비지가 무엇인지, 자바에서는 왜 가비지 컬렉션이 필요한지, 가비지 컬렉션이 개발자에게 주는 장점과 단점이 무엇인지 설명하라.
- 가비지는 메모리에는 저장되어있지만, 더 이상 사용하지 않는 쓰레기값을 말한다. C와 C++에서는 delete 키워드로 개발자가 더 이상 사용하지 않는 메모리를 명시적으로 제거해주어야 한다. 만약 이를 놓치고 쌓이게 되면 메모리 누수가 발생하여 프로그램이 무거워지거나 심한 경우 강제 종료될 수 있다. 자바에서는 이를 자동으로 처리해 줌으로써 개발자가 중점적으로 신경 써야 할 문제 하나를 덜어준 셈이다. 다만 가바지 컬렉션이 실시간으로 이루어지는 것이 아니라, JVM의 판단 하에 컬렉션을 몰아서 진행하기 때문에 프로그램이 잠깐 정지할 수 있다. 따라서 자바는 실시간 처리에는 적합하지 않을 수 있다는 단점이 있다.
16. 다음 표를 완성하라. 멤버가 4가지 접근 지정자로 각각 선언되었을 때, 같은 패키지의 클래스와 다른 패티지의 클래스에서 이 멤버를 접근할 수 있는지 O, X로 표기하라.
default | public | protected | private | |
같은 패키지 클래스 | O | O | O | X |
다른 패키지 클래스 | X | O | X | X |
'JAVA > 명품 JAVA Programming' 카테고리의 다른 글
[(개정판 4판) 명품 JAVA Programming] 5장 이론 문제 (0) | 2023.01.29 |
---|---|
[(개정판 4판) 명품 JAVA Programming] 4장 실습 문제 (1) | 2023.01.28 |
[(개정판 4판) 명품 JAVA Programming] 3장 실습 문제 (0) | 2023.01.24 |
[(개정판 4판) 명품 JAVA Programming] 3장 이론 문제 (0) | 2023.01.23 |
[(개정판 4판) 명품 JAVA Programming] 2장 실습 문제 (0) | 2023.01.23 |