01. 객체지향 프로그래밍에서 사용자에게 필요한 기능만 표시하는 데 사용되는 개념은 무엇인가?
① 캡슐화
② 추상화
③ 동적 바인딩
④ 상속
02. 다음 중 추상 클래스의 올바른 구문은 무엇인가?
① abstract class 클래스명 { 처리내용; }
② abstract 클래스명 { 처리내용; }
③ abstract class { 처리내용; }
④ abstract class Classname [] { 처리내용; }
03. 다음 중 추상 클래스에 대한 설명으로 옳지 않은 것은 무엇인가?
① abstract 키워드로 선언된다.
② abstract 메서드를 포함할 수도 있고 포함하지 않을 수도 있다.
③ 인스턴스화 할 수 있다.
④ final 메서드가 포함되어 있다.
04. 인터페이스에서 클래스를 선언하려면 어떤 접근제한자를 사용해야 하는가?
① Private
② Protected
③ Public
④ 앞의 보기 모두 가능
05. 다음 중 인터페이스의 올바른 구문은 무엇인가?
① interface 클래스명 { public void 메서드명(); }
② interface class 클래스명 { public void 메서드명(); }
③ interface 클래스명 { { private class 메서드명 (); }
④ interface 클래스명 { { public void 메서드명() { 처리내용; } }
06. 다음 중 추상 클래스가 포함된 프로그램은 무엇인가?
①
// 1번
class A { method(); }
class B extends A { method(); }
class Main { }
②
// 2번
interface A { method(); }
class B implements A { method(); }
class Main { }
③
// 3번 정답
abstract class A { method(); }
class B extends A { method(); }
class main { }
④
// 4번
interface A { method(); }
class B implements A { method(); }
class C extends B { method(); } class Main { }
07. 다음 프로그램을 실행하면 오류가 발생하는 이유는 무엇인가?
abstract class Example {
void displayText() {};
}
class Demo extends Example {
void method() {
System.out.println("method() 메서드 실행");
}
}
public class MyClass {
public static void main(String[] args) {
Demo e = new Demo();
e.method();
}
}
① 출력문에 오류가 있다.
② 객체 생성에 오류가 있다.
③ 추상 클래스에 포함된 메소드를 확장클래스에서 구현하지 않았다.
④ 프로그램에 오류가 없다.
-> 추상클래스 내부에 추상메소드가 아닌 일반 메소드만 있으므로 Demo 클래스에서는 딱히 구현할게 없어 오류가 없다.
08. 다음 프로그램을 실행하면 어디서 오류가 발생하는가?
abstract class Sample {
abstract void method();
}
class First extends Sample {
abstract void method() {
System.out.println("First abstract method");
}
}
public class MyClass {
public static void main(String[] args) {
Sample object = new First();
object.method();
}
}
① Sample 클래스
② First클래스의 추상메서드
③ MyClass 클래스의 main() 메서드
④ 오류가 없다
-> 추상메서드가 존재하려면 무조건 추상 클래스여야만 한다.
09. 다음 프로그램의 실행 결과는 무엇인가?
interface Methods {
public void funciton();
}
class Calculate implements Methods {
public void funciton(int l, int b) {
int area = l * b;
System.out.println(area);
}
}
public class MyClass {
public static void main(String[] args) {
Calculate c = new Calculate();
c.funciton(5, 10);
}
}
① 50
② area
③ l * b
④ 컴파일 오류
-> 문제의 의도는 Calculate 클래스에서 function을 인터페이스에 따라 구현할 때 인터페이스에는 파라미터가 존재하지 않지만 구현하는 부분은 int l, int b의 파라미터가 생겨서 인터페이스 규칙을 따르지않아 컴파일 오류가 발생하는 것을 유도한 것 같다. 하지만 @Override가 없으면 자바는 오버라이드하는 메서드인지 검사하지 않기때문에 Calculate의 function이 오버로드되어 50이 정상적으로 출력된다.
10. 다음 프로그램의 실행 결과는 무엇인가?
abstract class One {
abstract void calculate(int a);
}
class Two extends One {
void calculate(int a) {
System.out.println(a + a);
}
}
class Three extends One {
void calculate(int a) {
System.out.println(a * a);
}
}
public class MyClass {
public static void main(String[] args) {
One obj1 = new Two();
obj1.calculate(2);
One obj2 = new Three();
obj2.calculate(2);
}
}
① 4 4
② a+a a*a
③ 2 2
④ 컴파일 오류
'IT CookBook JAVA 마스터 > 연습문제' 카테고리의 다른 글
IT CookBook JAVA 마스터 Ch.11 연습문제 (0) | 2023.12.11 |
---|---|
IT CookBook JAVA 마스터 Ch.10 연습문제 (0) | 2023.12.11 |
IT CookBook JAVA 마스터 Ch.08 연습문제 (0) | 2023.12.11 |
IT CookBook JAVA 마스터 Ch.07 연습문제 (0) | 2023.12.11 |
IT CookBook JAVA 마스터 Ch.05 연습문제 (3) | 2023.10.23 |