일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 자바의 정석 6장
- JAVA 기초
- 자바 언어 기초
- 챗GPT 명령어 작성팁
- 이노베이션캠프 동북
- 트리 지름 구하기
- 이노캠
- 자바
- 스프링 입문강의
- 백준
- 조건문과 반복문
- 이노베이션캠프
- 이것이 자바다 확인문제
- Java
- ChatGPT
- ArrayList 개념
- 채팅GPT
- 자료구조
- 이것이 자바다
- Til
- Comparable과 Comparable
- 객체지향
- 인프런
- 이것이 자바다 13장
- 이노베이션 캠프
- 웹개발 기본지식
- 3장 확인문제
- 이것이 자바다 연습문제
- dfs
- BFS
- Today
- Total
기록공간
[JAVA] 이것이 자바다 확인 문제 7장 (상속) 본문
1. 자바의 상속에 대한 설명 중 틀린 것은 무엇입니까?
1) 자바는 다중 상속을 허용한다.
2) 부모의 메소드를 자식 클래스에서 재정의(오버라이딩) 할 수 있다.
3) 부모의 private 접근 제한을 갖는 필드와 메소드는 상속의 대상이 아니다.
4) final 클래스는 상속할 수 없고, final 메소드는 오버라이딩할 수 없다.
1) 자바는 다중 상속을 허용하지 않는다.
2. 클래스 타입 변환에 대한 설명 중 틀린 것은 무엇입니까?
1) 자식 객체는 부모 타입으로 자동 타입 변환된다.
2) 부모 객체는 어떤 자식 타입으로도 강제 타입 변환된다.
3) 자동 타입 변환을 이용해서 필드와 매개변수의 다형성을 구현한다.
4) 강제 타입 변환 전에 instanceof 연산자로 변환 가능한지 검사하는 것이 좋다.
2) 자식 객체가 부모 타입으로 자동 변된 후 다시 자식 타입으로 변환 할 때 강제 타입 변환을 사용할 수 있다. 항상(X)
3. final 키워드에 대한 설명으로 틀린 것은 무엇입니까?
1) final 클래스는 부모 클래스로 사용할 수 있다.
2) final 필드는 초기화 된 후에는 변경 할 수 없다.
3) final 메소드는 재정의(오버라이딩)할 수 없다.
4) static final 필드는 상수를 말한다.
1) final 이 붙은 클래스는 상속이 불가능 하므로 부모 클래스로 사용할 수 없다.
4. 오버라이딩(Overriding)에 대한 설명으로 틀린 것은 무엇입니까?
1) 부모 메소드의 시그너처(리턴 타입,메소드명, 매개 변수)와 동일해야 한다.
2) 부모 메소드보다 좁은 접근 제한자를 붙일 수 없다. (예: public(부모) -> private(자식))
3) @Override 어노테이션을 사용하면 재정의가 확실한지 컴파일러가 검증한다.
4) protected 접근 제한을 갖는 메소드는 다른 패키지의 자식 클래스에서 재정의할 수없다.
4) protected 접근제한자는 다른 패키지에서 자식클래스에 접근이 가능하므로 메소드 재정의 또한 가능하다.
5. 추상 클래스에 대한 설명으로 틀린 것은 무엇입니까?
1) 직접 객체를 생성할 수 없고, 상속만 할 수 있다.
2) 추상 메소드를 반드시 가져야 한다.
3) 추상메소드는 자식 클래스에서 재정의(오버라이딩)할 수 있다.
4) 추상 메소드를 재정의하지 않으면 자식 클래스도 추상 클래스가 되어야 한다.
2) 추상 메소드를 반드시 가져야 할 필요는 없다.
6.Parent 클래스를 상속해서 Child 클래스를 다음과 같이 작성 했는데, Child 생성자에서 컴파일 에러가 발생했습니다. 그 이유와 해결 방법을 설명해보세요.
public class Parent {
public String name;
public Parent(String name) {
this.name = name;
}
}
public class Child extends Parent {
public int studentNo;
public Child(String name, int studentNo) {
this.name=name;
this.studentNo = studentNo;
}
}
Child 클래스에서 this.name=name을 지우고, super(name)을 사용하여 상속받은 자식클래스 생성자 내에 부모 생성자를 호출해야 한다.
7. 출력 결과 :
Parent(String nation) call
Parent() Call
Child(String name) Call
Child() Call
8. 출력결과:
"스노우 타이어가 굴러갑니다."
"스노우 타이어가 굴러갑니다."
9. A, B, C, D, E, F 클래스가 다음과 같이 상속 관계에 있을 때 다음 빈칸에 들어올 수 없는 코드를 선택하세요.
2) (B) new A ()
10. 다음과 같이 작성한 Computer 클래스에 컴파일 에러가 발생했습니다. 그 이유를 설명해보세요.
Computer 클래스는 추상 클래스인 Machine을 상속받고있다. Machine클래스 내에서, work라는 추상 메소드를 선언하고있으므로, 이를 상속받은 Computer 클래스는 추상 메소드를 재정의해야한다.
11. MainActivity의 onCreate()를 실행할 때 Activity의 onCreate()도 실행시키고 싶습니다. 밑줄에 들어갈 코드를 작성해보세요.
public class Activity {
public void onCreate() {
System.out.println("기본적인 실행 내용");
}
}
public class MainActivity extends Acitivty {
@Override
public void onCreate() {
(super).onCreate();
System.out.println("추가적인 실행 내용");
}
}
12. 다음과 같이 Example 클래스에서 action() 메소드를 호출할 때 매개값이 C 객체일 경우에만 method2()가 호출되도록 밑줄에 들어갈 코드를 작성해보세요.
public class A {
public void method1() {
System.out.println("A-method1()");
}
}
public class B extends A {
public void method1() {
System.out.println("B-method1()");
}
}
public class C extends A {
public void method1() {
System.out.println("C-method1()");
}
public void method2() {
System.out.println("C-method2()");
}
}
public class Example {
public static void action(A a) {
a.method1();
if( a instanceof C ) {
c.method2():
}
}
public static void main(String[] args) {
action(new A());
action(new B());
action(new C());
}
}
'JAVA & Spring' 카테고리의 다른 글
[JAVA] 이것이 자바다 9장 확인 문제 (중첩 선언과 익명 객체 ) (0) | 2023.01.08 |
---|---|
[JAVA] 이것이 자바다 8장 확인 문제 (인터페이스) (0) | 2023.01.05 |
[JAVA] 이것이 자바다 확인문제 6장 (클래스) (0) | 2023.01.02 |
[JAVA] 이것이 자바다 5장 확인 문제 (참조 타입) (0) | 2022.12.30 |
[JAVA] 이것이 자바다 확인 문제 4장 (조건문과 반복문) (0) | 2022.12.29 |