[커널아카데미] 백엔드 개발 부트캠프 12기 3주차 - 객체지향(Ch6, 7) 연습문제 노트

굴착드릴·2025년 4월 7일

헷갈리거나 틀린 문제를 적었습니다.

연습문제

[6-10] 다음 중 생성자에 대한 설명으로 옳지 않은 것은?(모두 고르시오)

a. 모든 생성의 이름은 클래스의 이름과 동일해야한다.
b. 생성자는 객체를 생성하기 위한 것이다.
c. 클래스에는 생성자가 반드시 하나 이상 있어야 한다.
d. 생성자가 없는 클래스는 컴파일러가 기본 생성자를 추가한다.
e. 생성자는 오버로딩 될 수 없다.

초기 답 -> e
해답 -> b, e
생성자가 객체를 생성할 때 사용되기는 하지만, 객체를 초기화할 목적으로 사용되는 것이다.
객체를 생성하는 것은 new연산자이다.

[7-6] 자손 클래스의 생성자에서 조상 클래스의 생성자를 호출해야 하는 이유는 무엇인가?

초기 답 -> 문제가 뭘 묻는지 이해 못함
해답 -> 자식 클래스 초기화 과정에서 부모 클래스의 멤버에 접근하는 경우가 있기 때문

[7-7] 다음 코드의 실행했을 때 호출되는 생성자의 순서와 실행결과를 적으시오

class Parent {
    int x = 100;

    Parent() {
        this(200);
    }

    Parent(int x) {
        this.x = x;
    }

    int getX() {
        System.out.println("this"+this.x);
        return x;
    }
}

class Child extends Parent {
    int x = 3000;

    Child() {
        this(1000);
    }

    Child(int x){
        this.x = x;
    }
}
public class Ex7_7 {
    public static void main(String[] args) {
        Child c= new Child();

        System.out.println(c.getX());
    }
}

[7-25] Outer 클래스 내부 클래스 Inner의 멤버변수 iv의 값을 출력하시오

class Outer {
    class Inner {
        int iv=100;
    }
}
class Outer {
    static class Inner {
        int iv=200;
    }
}
public class Ex7_25 {
    public static void main(String[] args) {
    }
}

해답

      	Outer outer = new Outer();
        Outer.Inner inner = outer.new Inner();
        System.out.println(inner.iv);

[7-28]

package com.github.can019.base.ch07;

import java.awt.*;
import java.awt.event.*;

public class Ex7_28 {
    public static void main(String[] args) {
        Frame f = new Frame();
        f.addWindowFocusListener(new EventHandler);
    }
}

class EventHandler extends WindowAdapter {
    @Override
    public void windowClosing(WindowEvent e) {
        e.getWindow().setVisible(false);
        e.getWindow().dispose();
        System.exit(0);
    }
}

해답

import java.awt.*;
import java.awt.event.*;

public class Ex7_28 {
    public static void main(String[] args) {
        Frame f = new Frame();
        f.addWindowFocusListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                e.getWindow().setVisible(false);
                e.getWindow().dispose();
                System.exit(0);
            }
        });
    }
}
profile
두두두두..

0개의 댓글