본문 바로가기
JAVA

명품 자바 에센셜 4강 이론문제

by IT 정복가 2022. 3. 16.
728x90

1. 자바의 클래스와 객체에 대한 설명 중 틀린 것은?
① 객체를 인스턴스라고도 부른다.
② 클래스는 객체를 생성하기 위한 틀이다.
③ 클래스는 필드와 메소드로 구성된다.
④ 클래스의 필드들은 private 보다는 public으로 선언하는 것이 바람직하다.

 

 

2. 생성자에 대한 설명 중 잘못된 것은?
① 한 클래스에 여러 개의 생성자가 있어도 된다.
② this()는 생성자에서 다른 생성자를 호출하는 코드이다.
③ 생성자에서는 this 레퍼런스를 사용할 수 없다.
④ 생성자는 객체 당 오직 한 번만 호출된다.

 

 

3. 다음 중 Circle 클래스의 배열 생성 문에서 오류가 없는 것은?
① Circle c[] = new Circle[]; 
② Circle []c = new Circle(); 
③ Circle []c = new Circle[5];
④ Circle c[] = new Circle[5](); 

 

 

4. 다음은 static 멤버에 대한 설명이다. 보기에서 빈칸에 적절한 말을 삽입하라.

더보기

static 멤버는 클래스 멤버라고도 불리며, 동일한 클래스의 모든 객체들에 의해 공유된다. static 멤머는 개체 레퍼런스나 클래스 이름으로도 접근할 수 있으며, 객체가 생성되기 전 프로그램이 시작될 때 생성되어 있다. 특히 static 메소드는 static 멤버들만 접근할 수 있고, this을(를) 사용할 수 없는 제약 사항이 있다.

 

 

5. 다음은 메소드 오버로딩이 성공한 사례인가, 실패한 사례인가?

class A {
    int x;
    void f(int x) {this.x = x; }
    int f(int x, int y) { return x*y; }
}

답: 메소드의 매개변수의 개수가 다르기때문에 성공한 사례이다.

 

 

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

더보기

자바에서는 객체를 임의로 소멸시킬 수 없으며, 이것은 개발자에게 매우 다행한 일이다. 참조하는 레퍼런스가 하나도 없는 객체를 가비지라고 판단하고, 가비지를 사용 메모리로 자동 수집하는 가비지 컬렉션을 진행시킨다. 응용프로그램에서 자바 플랫폼에 이 과정을 지시하고자 하면 System.gc()코드를 호출하면 된다.

 

7. 다음 소스에 오류는 없지만, 객체 지향 프로그래밍 관점에서 바람직한 코드로 수정하라.

class Person {
    public int age;
}

public class Example {
    public static void main(String args[]) {
        Person a = new Person();
        a.age = 17;
    }
}

답:

class Person {
    private int age;
    Person(int age) {
        this.age = age;
    }
}

public class Example {
    public static void main(String args[]) {
        Person a = new Person(17);
    }
}

 

 

8. 다음 프로그램의 실행 결과는 무엇인가?

class Number {
    int n;
    public Number(int n) { this.n = n; }
}

public class Example {
    static void plusTen(Number x) { x.n += 10; }
    public static void main(String args[]) {
        Number ob = new Number(5);
        plusTen(ob);
        system.out.println(ob.n);
    }
}

답: 15

 

 

9. 다음 Rectangle 클래스의 두 생성자를 this()가 없는 코드로 바꾸어라.

public class Rectangle {
    int w,h;
    Rectangle(int w, int h) {
        this.w = w; this.h = h;
    }
    Rectangle(int w) {
        this(w,2); 
    }
    Rectangle() {
        this(1); 
    }
}

답:

public class Rectangle {
    int w,h;
    Rectangle(int w, int h) {
        this.w = w; this.h = h;
    }
    Rectangle(int w) {
        this.w = w; this.h = 2;
    }
    Rectangle() {
        this.w = 1; this.h = 2;
    }
}

 

 

10. 다음 중 가비지가 발생하는 것은?

답: 4번

 

 

11. 다음 멤버 함수의 사용이 잘못된 것은?

public class StaticTest {
    static int a;
    static int getA() { return a; } // 1
    int b;
    int getB() { return b; } // 2
    int f() { return getA(); } // 3
    static int g() { return getB(); } // 4
}

답: 4번

 

 

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

class StaticSample {
    int x;
    static int y;
    static int f() { return y; }
}

public class UsingStatic {
    public static void main(Stirng [] args) {
        StaticSample.x = 5; // 1
        StaticSample.y = 10; // 2
        int tmep = StaticSample.f(); // 3
        StaticSample a = new StaticSample();
        temp = a.y; // 4
    }
}

답: 1번

728x90