콘텐츠로 이동

1단원 쪽지시험: Java OOP — 클래스와 객체

이름: ____________

  • 출력 예측: 소스 코드를 보고 실행 결과를 예측하여 작성하세요. 코드를 실행하기 전에 먼저 작성하세요.
  • 빈칸 채우기: ______ 빈칸을 채워 프로그램을 완성하세요.

문제 1. 객체는 같은가? (출력 예측)

소스 코드

public class Main {
    int x = 5;
    String name = "Java";

    public static void main(String[] args) {
        Main obj1 = new Main();
        Main obj2 = new Main();
        System.out.println(obj1.x);
        System.out.println(obj2.name);
        System.out.println(obj1.x == obj2.x);
        System.out.println(obj1 == obj2);
    }
}

실행 결과 (순서대로 예측하여 작성하세요)

①

②

③

④

문제 2. 속성은 독립적이다 (출력 예측)

소스 코드

public class Main {
    int score = 100;

    public static void main(String[] args) {
        Main s1 = new Main();
        Main s2 = new Main();
        s2.score = 85;
        System.out.println(s1.score);
        System.out.println(s2.score);
        System.out.println(s1.score == s2.score);
        s1.score = s2.score;
        System.out.println(s1.score);
    }
}

실행 결과 (순서대로 예측하여 작성하세요)

①

②

③

④

문제 3. static vs 인스턴스 메서드 (출력 예측)

소스 코드

public class Main {
    String brand = "Hyundai";

    static void announce() {
        System.out.println("Car class ready!");
    }

    public void showBrand() {
        System.out.println("Brand: " + brand);
    }

    public void speed(int maxSpeed) {
        System.out.println("Max speed: " + maxSpeed + " km/h");
    }

    public static void main(String[] args) {
        announce();
        Main myCar = new Main();
        myCar.showBrand();
        myCar.speed(180);
    }
}

실행 결과 (순서대로 예측하여 작성하세요)

①

②

③

문제 4. 생성자(Constructor) (출력 예측)

소스 코드

public class Main {
    String name;
    int age;

    public Main(String n, int a) {
        name = n;
        age = a;
    }

    public static void main(String[] args) {
        Main p1 = new Main("Alice", 20);
        Main p2 = new Main("Bob", 17);
        System.out.println(p1.name + " is " + p1.age + " years old.");
        System.out.println(p2.name + " is " + p2.age + " years old.");
        System.out.println(p1.age > p2.age);
    }
}

실행 결과 (순서대로 예측하여 작성하세요)

①

②

③

문제 5. 다중 속성과 final (출력 예측)

소스 코드

public class Main {
    String fname = "John";
    String lname = "Doe";
    int age = 24;
    final int MAX_AGE = 100;

    public static void main(String[] args) {
        Main p = new Main();
        System.out.println("Name: " + p.fname + " " + p.lname);
        System.out.println("Age: " + p.age);
        p.age = 30;
        System.out.println("Age: " + p.age);
        System.out.println(p.age < p.MAX_AGE);
    }
}

실행 결과 (순서대로 예측하여 작성하세요)

①

②

③

④

문제 6. 캡슐화 — getter / setter (출력 예측)

소스 코드

class Person {
    private String name = "Alice";
    private int age = 25;

    public String getName() { return name; }
    public int getAge()     { return age;  }
    public void setAge(int a) { age = a;  }
}

public class Main {
    public static void main(String[] args) {
        Person p = new Person();
        System.out.println(p.getName());
        System.out.println(p.getAge());
        p.setAge(30);
        System.out.println(p.getAge());
        System.out.println(p.getAge() > 25);
    }
}

실행 결과 (순서대로 예측하여 작성하세요)

①

②

③

④

문제 7. 상속(Inheritance) (출력 예측)

소스 코드

class Vehicle {
    protected String brand = "Ford";

    public void honk() {
        System.out.println("Tuut, tuut!");
    }
}

class Car extends Vehicle {
    private String model = "Mustang";

    public static void main(String[] args) {
        Car myCar = new Car();
        myCar.honk();
        System.out.println(myCar.brand + " " + myCar.model);
        System.out.println(myCar.brand);
    }
}

실행 결과 (순서대로 예측하여 작성하세요)

①

②

③

문제 8. 다형성(Polymorphism) — 메서드 오버라이딩 (출력 예측)

소스 코드

class Animal {
    public void sound() {
        System.out.println("...");
    }
}

class Cat extends Animal {
    public void sound() {
        System.out.println("Meow");
    }
}

class Dog extends Animal {
    public void sound() {
        System.out.println("Woof");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal a = new Animal();
        Animal c = new Cat();
        Animal d = new Dog();
        a.sound();
        c.sound();
        d.sound();
    }
}

실행 결과 (순서대로 예측하여 작성하세요)

①

②

③

문제 9. 은행 계좌 (빈칸 채우기)

private 속성을 getter/setter로만 접근하는 은행 계좌 클래스를 완성하세요.

실행 예시

500
800

소스 코드

class BankAccount {
    ______ int balance = 0;

    public int getBalance() {
        return ______;
    }

    public void deposit(int amount) {
        if (amount > 0) {
            balance ______ amount;
        }
    }
}

public class Main {
    public static void main(String[] args) {
        BankAccount acc = new BankAccount();
        acc.______( 500 );
        System.out.println( acc.______() );
        acc.deposit( 300 );
        System.out.println( acc.getBalance() );
    }
}

문제 10. 도형 클래스 (빈칸 채우기)

상속과 메서드 오버라이딩을 사용하는 도형 클래스를 완성하세요.

실행 예시

Red shape
Blue circle, r=5

소스 코드

class Shape {
    String color;

    public Shape(String c) {
        color = c;
    }

    public void draw() {
        System.out.println(______ + " shape");
    }
}

class Circle ______ Shape {
    int radius;

    public Circle(String c, int r) {
        super(c);
        ______ = r;
    }

    public void draw() {
        System.out.println(color + " circle, r=" + ______);
    }
}

public class Main {
    public static void main(String[] args) {
        Shape s = new Shape("Red");
        Shape c = new ______("Blue", 5);
        s.draw();
        c.______();
    }
}