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

 

💡 

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

 

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


[해설]

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

 

💡 

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

 

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


[해설]

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

 

💡 

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

 

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


[해설]

 

💡 

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

Book[] book = new Book[10];

 

 

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

 

💡 

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

(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; }
}

 

 

[정답] 

 

[해설]

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

 

 

💡 

다음 코드에 대해 답하라.

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)

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) 같은 클래스 내의 다른 생성자를 사용할 수 있다.

 

💡 

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

 

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

 

[정답]

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 사용해서 객체 내부의 필드에 안전하게 접근해야합니다.

 

💡 

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

 

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)

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)

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);
    }
}

 

💡 

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

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

 

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


[해설]

(p211)

 

💡 

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

(1)

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

(2)

String a = new String("aa");
String b = a;
String c = b;
a = null;
b = null;

 

[정답] 

 

💡 

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

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 메서드가 아니므로 오류가 발생합니다.

 

💡 

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

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 멤버는 클래스 이름으로 접근할 수 없습니다.

 

💡 

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

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

 

[정답]

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

 

 

💡 

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

 

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 이므로 오버라이딩 불가능

 

💡 

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

 

[정답] 

💡 

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

 

[정답] 

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

 

반응형
profile

다라다라V

@DaraDaraV

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