책/멘토씨리즈 자바
[멘토씨리즈 자바] 10 상속 응용문제
yn98
2024. 7. 22. 09:52
1. 다음 중 상속과 관련된 단어를 모두 고르세요.
- super
- super()
- this
- extends
2. 다음 코드를 실행했을 때 콘솔창에 출력되는 결과는 무엇입니까?
package section10;
class Person {
void printHello() {
System.out.println("안녕하세요.");
}
}
class Student extends Person {
}
public class PRACTICE_10_02 {
public static void main(String[] args) {
Person p = new Person();
p.printHello();
Student s = new Student();
s.printHello();
}
}
더보기
안녕하세요.
안녕하세요.
3. <PRACTICE_10_02.java> 코드에서 class Student가 Person의 printHello()를 다음과 같이 오버라이드 했을 때, 출력되는 결과는 무엇입니까?
class Student extends Person {
@Override
void printHello() {
System.out.println("안녕하세요, 저는 자바를 공부하는 학생입니다.");
}
}
더보기
안녕하세요.
안녕하세요, 저는 자바를 공부하는 학생입니다.
4. 다음 코드는 컴파일 에러가 발생합니다. 그 이유는 무엇이며 어떻게 해결해야 할까요?
package section10;
public class ClassA {
private int a;
private ClassA(int a) {
this.a = a;
}
public void methodA() {
System.out.println("ClassA클래스의 methodA() 메서드입니다.");
System.out.println("필드 a의 값은 " + a + "입니다.");
}
}
package section10;
public class ClassB {
public static void main(String[] args) {
ClassA ca = new ClassA(3);
ca.methodA();
}
}
더보기
ClassA의 생성자의 접근제어자가 private이기 때문에 ClassB에서 접근할 수 없다.
5. 다음 두 개의 클래스는 상속 관계에 있으나, 다른 패키지에 속해 있습니다. Child 클래스에서 Parent 클래스의 parentMethod 메서드를 호출하기 위해 어떤 코드를 작성해야 할까요?
package section10.access1;
public class Parent {
protected void parentMethod() {
System.out.println("parentMethod is called");
}
}
package section10.access2;
import section10.access1.*;
public class Child {
void accessParentMethod() {
`???`
}
}
더보기
접근 제어자를 protected로 작성하면 된다.
package section10.access2;
import section10.access1.*;
public class Child extends Parent {
void accessParentMethod() {
super.parentMethod();
}
}