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.______();
}
}