본문 바로가기
멘토씨리즈 자바/예제

[응용문제] 상속

by Hwanii_ 2023. 5. 21.
728x90

SECTION 10 - 상속

273 ~ 275 page.

 

1. 다음 중 상속과 관련된 단어를 모두 고르세요.

 

1) super

2) super()

3) this

4) extends

 

=> 1), 2), 4)

 

3)은 인스턴스변수 자기 자신을 의미하는 참조변수 이다.

 

2. 다음 코드를 실행했을 때 콘솔창에 출력되는 결과는 무엇입니까 ?

class Person {
	void printHello() {
    	sysout("안녕하세요.");
    }
}

class Student extends Person {
	
}

main()

Person person = new Person();
person.printHello();

Student student = new Student();
student.printHello();

 

=>

 

안녕하세요.

안녕하세요.

 

3. <PRACTICE_10_02.java> 코드에서 class Student가

Person의 printHello()를 다음과 같이 오버라이드 했을 때,

콘솔창에 출력되는 결과는 무엇입니까?

 

=>

 

 

Console

기존의 조상 클래스가 가지고 있는 printHello 메서드를 

자손 클래스에서 오버라이딩 해서, 기능을 변경한 상황.

 

그래서 조상 클래스의 printHello 메서드가 아닌,

재정의한 메서드가 뜨게 된다.

 

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();
	}
}

 

 

=>

 

1. public class는 한 클래스당 1개만 생성할 수 있다.

2. .java 소스파일과 이름이 동일 해야 한다.

우선, 각각의 class 이름이 .java 소스파일과 동일한지 확인하기.

public을 지우면 클래스간의 접근이 불가능 하다.

 

3. classB.java를 보면

해당 에러를 확인 할 수 있다.

객체를 생성하려고 봤더니, 호출할 생성자가 보이지 않다는 것이다.

이는, classA.java 클래스의 생성자가 private 처리가 되어있기 때문이다.

 

private는 접근제어자로써,  클래스 외부에서 접근이 불가능 하게 한다.

 

4. 따라서, classA.java 에서의 생성자 이름 앞에 private를 제거해 주면 된다.

 

 

 

5. 다음 두 개의 클래스는 상속 관계에 있으나, 다른 패키지에 속해 있습니다.

Child 클래스에서 Parent 클래스의 parentMethod 메서드를 호출하기 위해

어떤 코드를 작성해야 할까요?

 

[Parent.java]

package section10.access1;

public class Parent {
	protected void parentMethod() {
		System.out.println("parentMethod is called.");		
	}
}

 

[Child.java]

package session10.access2;
import section10.access1.*;

public class Child {
	void accessParentMethod() {
    -> _____________________________________
	}
}

 

=> 추가

 

 

 

 

 

 

 

 

반응형

'멘토씨리즈 자바 > 예제' 카테고리의 다른 글

[응용문제] 스레드  (0) 2023.05.28
[응용문제] 다형성과 타입 변환  (0) 2023.05.22
[응용문제] 생성자  (0) 2023.05.21
[응용문제] 메서드  (0) 2023.05.21
[응용문제] 클래스  (0) 2023.05.21