💡
자바의 클래스와 객체에 대한 설명 중 틀린 것은?
[정답] ④ 필드는 클래스 내에서 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 이므로 오버라이딩 불가능
💡
가비지와 가비지 컬렉션은 표준 C나 C++에는 없는 자바 언어의 독특한 특성이다. 가비지란 무엇인지, 자바에서는 왜 가비지 컬렉션이 필요한지, 가비지 컬렉션이 개발자에게 주는 장점과 단점은 무엇인지 설명하라.
[정답]
💡
다음 표를 완성하라. 멤버가 4가지 접근 지정자로 각각 선언되었을 때, 같은 패키지의 클래스와 다른 패키지의 클래스에서 이 멤버를 접근할 수 있는지 O, X로 표기하라
[정답]
default | public | protected | private | |
같은 패키지 클래스 | O | O | O | X |
다른 패키지 클래스 | X | O | X | X |
'대학교 > 명품 Java programming 문제' 카테고리의 다른 글
[Java] 명품 Java Programming 5장 연습 문제 풀이 해설 (이론 문제) (0) | 2024.05.21 |
---|---|
[Java] 명품 Java Programming 4장 연습 문제 풀이 해설 (실습 문제) (0) | 2024.05.20 |
[Java] 명품 Java Programming 3장 연습 문제 풀이 해설 (실습 문제) (0) | 2024.05.18 |
[Java] 명품 Java Programming 3장 연습 문제 풀이 해설 (이론 문제) (0) | 2024.05.16 |
[Java] 명품 Java Programming 2장 연습 문제 풀이 해설 (실습 문제) (0) | 2024.05.15 |