객관식 문제
1. 자바에서 한 클래스가 다른 클래스를 상속받을 때 사용하는 키워드는 무엇인가요?
답 : b) extends
2. 상속을 통해 자식 클래스가 부모 클래스에서 얻을 수 있는 이점은 무엇인가요?
답 : a) 코드 재사용성
3. 다중 상속이 허용되지 않는 이유 중 하나는 무엇인가요?
답 : c) 다이아몬드 문제로 인한 모호성
4. 상속된 메서드를 자식 클래스에서 재정의하려면 어떤 키워드를 사용하나요?
답 : d) 없음, 자동으로 재정의된다.
5. 자바에서 모든 클래스의 상위 클래스는 무엇인가요?
답 : a) Object
6. 생성자의 기본 역할은 무엇인가요?
답 : b) 클래스의 객체를 초기화한다.
7. 생성자는 언제 호출되나요?
답 : b) 객체가 생성될 때
8. 생성자를 오버로딩할 때 중요한 조건은 무엇인가요?
답 : b) 서로 다른 매개변수를 가져야 한다
9. 인터페이스의 특징으로 옳은 것은 무엇인가요?
답 : b) 메서드의 구현을 포함할 수 없다
10. 인터페이스의 메서드 구현을 클래스에서 강제하기 위한 키워드는 무엇인가요?
답 : a) implements
11. 다형성의 주요 특징은 무엇인가요?
답 : a) 여러 형태로 객체를 생성할 수 있다
12. 오버라이딩과 오버로딩의 차이점으로 올바른 것은 무엇인가요?
답 : c) 오버라이딩은 상속 관계에서 이루어진다
13. 추상 클래스의 주요 특징으로 옳은 것은 무엇인가요?
답 : c) 인스턴스를 만들 수 없다
14. 추상 클래스와 인터페이스의 공통점은 무엇인가요?
답 : a) 둘 다 객체를 생성할 수 없다
15. 추상 메서드는 어떤 키워드를 사용하여 선언하나요?
c) abstract
서술형 문제
1. 추상 클래스와 일반 클래스의 차이점을 설명하세요
답 : 추상클래스 선언된 추상메서드는 상속을 통해 실행시키는 코드를 다시 짜줘야한다
2. 추상클래스와 인터페이스를 함께 사용하는 이유와 예를 설명하세요
답 : 상속과 구현을 모두 활용할 수 있기 때문에
3. 추상 클래스를 상속받은 자식 클래스에서 추상 메서드를 구현해야 하는 이유를 설명하세요
답 : 추상 메서드는 아직 구현되지 않았으므로 자식 클래스에서 그 메서드를 구현해주어야 한다
4. 추상 클래스에서 선언된 일반 메서드와 추상 메서드의 차이점을 설명하세요.
답 : 일반 메서드는 이미 구현이 된 것이고, 추상 메서드는 자식 클래스에서 구현을 해 주어야 구현이 된다.
5. 상속과 구성의 차이점과 각각의 장단점을 비교하세요
답 : 상속은 상속받는 클래스가 변경 없이 일관된 동작을 할 필요가 있을 때 적합하고, 구성은 변경 가능성을 고려하거나 여러 독립적인 기능을 조합해야 할 때 유용하다.
6. 생성자에서 this와 super 키워드의 차이점에 대해 설명하세요
답 : this 키워드는 필드에서 선언된 변수에 접근하도록 하는 것이고, super는 상위 클래스에 메서드에 접근하는 것이다.
7. 자바에서 인터페이스와 추상 클래스의 차이점을 설명하세요
답 : 추상 클래스는 다중 상속을 지원하지 않는 반면, 인터페이스는 다중 상속을 지원한다.
8. 다형성의 개념과 객체지향 프로그래밍에서의 중요성을 설명하세요.
답 : 하나의 객체가 여러개의 자료형 타입을 갖는 것을 다형성이라고 한다. 이는 복잡한 형태의 코드를 간단하게 처리할 수 있도록 한다.
9. 메서드 오버로딩과 오버라이딩의 차이점을 비교하세요
답 : 오버로딩은 입력받는 값이 다른 것이고 오버라이딩은 입력받는 값은 같고, 자식 클래스에서 같은 메서드를 생성하는 것이다.
10. 동적 바인딩의 개념을 설명하고 다형성과의 관계를 설명하세요
답 : 동적 바인딩은 프로그램 실행 중 메서드 호출이 실제 어떤 클래스의 메서드를 호출할 지 결정하는 방식. 동적바인딩은 실행 시점에 객체의 실제 타입에 맞는 메서드를 호출하게 하여 다형성을 실현하는 기법.
코딩 테스트 문제
[1~7] 아래 코드를 실행했을 때 출력되는 결과를 적으시오.
class Animal {
String sound = "generic sound";
}
class Dog extends Animal {
String sound = "bark";
}
public class Main {
public static void main(String[] args) {
Animal a = new Dog();
System.out.println(a.sound);
}
}
1. generic sound
class Parent {
void show() {
System.out.println("Parent");
}
}
class Child extends Parent {
void show() {
System.out.println("Child");
}
}
public class Main {
public static void main(String[] args) {
Parent p = new Child();
p.show();
}
}
2. Child
class Parent {
int x = 10;
}
class Child extends Parent {
int x = 20;
}
public class Main {
public static void main(String[] args) {
Parent p = new Child();
System.out.println(p.x);
}
}
3. 10
class A {
A() {
System.out.println("A's constructor");
}
}
class B extends A {
B() {
System.out.println("B's constructor");
}
}
public class Main {
public static void main(String[] args) {
B obj = new B();
}
}
4.
A's constructor
B's constructor
class A {
A() {
System.out.println("A's no-arg constructor");
}
}
class B extends A {
B() {
System.out.println("B's no-arg constructor");
}
}
public class Main {
public static void main(String[] args) {
A a = new B();
}
}
5.
A's no-arg constructor
B's no-arg constructor
interface A {
void display();
}
interface B extends A {
void display();
}
class C implements B {
public void display() {
System.out.println("C's display");
}
}
public class Main {
public static void main(String[] args) {
A obj = new C();
obj.display();
}
}
6. C's display
interface A {
default void show() {
System.out.println("A");
}
}
class B implements A {
public void show() {
System.out.println("B");
}
}
public class Main {
public static void main(String[] args) {
A obj = new B();
obj.show();
}
}
7. B
'Java' 카테고리의 다른 글
5주차 퀴즈 (0) | 2024.11.14 |
---|---|
[2024-2 Java 스터디] #5주차 "콘솔, 파일 입출력" (0) | 2024.11.14 |
[2024-2 Java 스터디] #4주차 (4) | 2024.11.05 |
3주차 퀴즈 (0) | 2024.10.31 |
[2024-2 Java 스터디] #3주차 (0) | 2024.10.30 |