728x90
Section10 상속
1. 다음 중 상속과 관련된 단어를 모두 고르세요.
- super
- super()
- this
- extends
더보기
- super ( O )
- super() ( O )
- this ( X )
- extends ( O )
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. 다음 코드는 컴파일 에러가 발생합니다. 그 이유는 무엇이며 어떻게 해결해야 할까요?
[ClassA.java]
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 + "입니다.");
}
}
[ClassB.java]
package section10;
public class ClassB {
public static void main(String[] args) {
ClassA ca = new ClassA(3);
ca.methodA();
}
}
더보기
- classA의 생성자 ClassA의 접근 제한자가 private이기 때문에 classB에서 접근할 수 없습니다.
- private 생성자 : 클래스 외부에서 객체를 생성할 수 없으며, 클래스 내부에서만 생성자를 호출해 객체를 생성할 수 있습니다.
- private 필드/메서드 : 클래스 외부에서 접근할 수 없으며, 클래스 내부에서만 사용할 수 있습니다.
[ClassA.java]
package section10;
public class ClassA {
private int a;
public ClassA(int a) { // 같은 패키지 내에서 접근 가능하도록
this.a = a; // 접근 제한자를 public, protected, default 으로 변경
}
public void methodA() {
System.out.println("ClassA클래스의 methodA() 메서드입니다.");
System.out.println("필드 a의 값은 " + a + "입니다.");
}
}
5. 다음 두 개의 클래스는 상속 관계에 있으나, 다른 패키지에 속해 있습니다. Child 클래스에서 Parent 클래스의 parentMethod 메서드를 호출하기 위해 어떤 코드를 작성해야 할까요?
[Parent.java]
package section10.access1;
public class Parent {
protected void parentMethod() {
System.out.println("parentMethod is called");
}
}
[Child.java]
package section10.access2;
import section10.access1.*;
public class Child {
void accessParentMethod() {
`???`
}
}
더보기
- protected 생성자 : 같은 패키지의 클래스에서 생성자를 호출해 객체를 생성할 수 있습니다. 또한, 다른 패키지더라도 해당 클래스의 자식 클래스라면 생성자를 호출해 객체를 생성할 수 있습니다.
- protected 필드/메서드 : 같은 패키지의 클래스에서 접근 및 사용할 수 있으며, 해당 클래스의 자식 클래스라면 다른 패키지에서라도 사용할 수 있습니다.
[Child.java]
package section10.access2;
import section10.access1.*;
public class Child extends Parent {
void accessParentMethod() {
super.parentMethod();
}
}
728x90