Dorothy_YANG
With Dorothy
Dorothy_YANG
전체 방문자
오늘
어제
  • 분류 전체보기 (279)
    • Hi, I'm Dorothy 🕵️‍♂️ (21)
      • Slowly but Surely (18)
      • IT certifications (3)
    • 🤯TIL (80)
      • HTML & CSS (2)
      • Javascript & jQuery (13)
      • React (13)
      • C언어 (1)
      • JAVA (22)
      • Python (2)
      • Oracle SQL (10)
      • My SQL (5)
      • Spring (12)
    • 💻Programmers (17)
    • 🏫 Open API_JAVA (101)
    • 🌎 Project (10)
      • Shopping (10)
    • 💥 Error (24)
    • ⚙ Setting (23)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • oracle
  • java
  • 파이썬온라인
  • 비쥬얼스튜디오코드
  • colaboratory
  • HTML
  • SQL
  • 독학후기
  • googlecolaboratory
  • SQLD합격후기
  • 시작일종료일
  • AllArgsConstructor
  • sql기간
  • Database
  • 콜라보레이토리
  • spring
  • 기간설정
  • SQLD합격
  • 코딩앙마
  • CSS
  • 백준
  • 연습문제
  • 오류해결
  • Eclipse
  • 서버등록
  • Javascript
  • 노마드코더
  • 기간쿼리
  • 창초기화
  • 이것이자바다

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dorothy_YANG

With Dorothy

[이것이 자바다 - 연습문제] chapter 07. 상속
🤯TIL/JAVA

[이것이 자바다 - 연습문제] chapter 07. 상속

2022. 11. 8. 23:15
728x90

책 버전

0. 문제
➡ 정답

(설명)

 

1. 자바의 상속에 대한 설명 중 틀린 것은 무엇입니까?

➡ 자바는 다중 상속을 허용한다.

 

(설명) 문법적인 한계! 자바는 단일 상속만을 지원한다.

ex) 다이아몬드 문제


2. 클래스 타입 변환에 대한 설명 중 틀린 것은 무엇입니까?

➡ 부모 객체는 항상 자식 타입으로 강제 타입 변환된다.

 

(설명)

X 항상 되는 것은 아니다! 


3. final 키워드에 대한 설명으로 틀린 것은?

➡ final 클래스는 부모 클래스로 사용할 수 있다.

 

(설명)

final 키워드는 해당 선언이 최종 상태이고, 결코 수정될 수 없음을 뜻한다.

때문에 final 키워드를 class 앞에 붙이게 되면 이 클래스는 최종적인 클래스이므로 상속할 수 없는 클래스가 된다!


4. 오버라이딩(Overriding)에 대한 설명으로 틀린 것은?

➡ protected 접근 제한을 갖는 메소드는 다른 패키지의 자식 클래스에서 재정의할 수 없다.

 

(설명)

protected : 다른 패키지라도 자식 클래스에서는 접근이 가능하다. = 재정의할 수 있다.


5. Parent. 클래스를 상속해서 Child 클래스를 다음과 같이 작성하는데, 

    Child 클래스의 생성자에서 컴파일 에러가 발생했습니다. 그 이유를 설명해보세요.

public class Parent {

	public String name;

	public Parent(String name) {
		this.name = name;
	}
}
public class Child extends Parent{

	private int studentNo;
	
	// 컴파일에러나는 이유?!!
	public Child(String name, int studentNo) {
		this.name = name; // 이 부분을 super(name);으로 변경해야 한다!
		this.studentNo = studentNo;
	}
}

 

(설명)

부모 클래스 생성자를 먼저 super를 통해 정의해야 한다.

왜? ➡ 매개변수가 다를 경우, 컴파일러가 super()를 자동으로 추가되지 않기 때문이다.


6. Parent 클래스를 상속받아 Child 클래스를 다음과 같이 작성했습니다.

    ChildExample 클래스를 실행했을 때 호출되는 각 클래스의 생성자의 순서를 생각하면서 출력 결과를 작성해보세요.

public class Parent {
	public String nation;
	
	public Parent() {
		this("대한민국");
		System.out.println("Parent() call"); // 2
	}
	
	public Parent(String nation) {
		this.nation = nation;
		System.out.println("Parent(String nation) call"); // 1
	}
}
public class Child extends Parent {
	private String name;
	
	public Child() {
		this("홍길동");
		System.out.println("Child() call"); // 4
	}
	
	public Child(String name) {
		super(); // 컴파일러 자동추가 
		this.name = name;
		System.out.println("Child(String name) call"); // 3
	}
}
public class ChildExample {

	public static void main(String[] args) {
		Child child = new Child();
	}
}

➡

Parent(String nation) call
Parent() call
Child(String name) call
Child() call

 

(설명)

부모 생성자 호출은 super(); 로 컴파일러 자동추가(5번과 다름 주의)

 

** 호출되는 순서 잘 확인하기   

1. 상속받는 Parent 생성자로 먼저 초기화를 진행 ➡ this()를 만나서 Parent(String nation) 먼저 수행하게 된다. 

2. 그 다음 Parent() 수행    

3. Child()에서 this()를 부르기 때문에 Child(String name)을 호출한 후 Child()가 수행됨


7. Tire 클래스를 상속받아 SnowTire 클래스를 다음과 같이 작성했습니다. SnowTireExample 클래스를 실행했을 때 출력 력결과는 무엇일까요?

 

public class Tire {
	public void run() {
		System.out.println("일반 타이어가 굴러갑니다.");
	}
}
public class SnowTire extends Tire {

	@Override
	public void run() {
		System.out.println("스노우 타이어가 굴러갑니다.");
	}
}
public class SnowTireExample {

	public static void main(String[] args) {
		SnowTire snowTire = new SnowTire();
		Tire tire = snowTire;
		
		snowTire.run();
		tire.run();
	}
}

➡

스노우 타이어가 굴러갑니다.

스노우 타이어가 굴러갑니다.

 

(설명)

tire.run()은 tire 클래스를 구현하고 있는 snowTire를 넣어 초기화를 시켜줌

결국 snowTire.run();과 tire.run();은 같은 결과를 가져올 수 밖애 없음


8번 문제는 생략합니다.

728x90
저작자표시 (새창열림)

'🤯TIL > JAVA' 카테고리의 다른 글

[연산자] 복합대입 연산자?  (0) 2023.01.19
[이것이 자바다 - 연습문제] chapter 08. 인터페이스  (0) 2022.11.09
[이것이 자바다 - 연습문제] chapter 06. 클래스  (0) 2022.11.07
[이것이 자바다 - 연습문제] chapter 05. 참조 타입  (0) 2022.10.13
[이것이 자바다 - 연습문제] chapter 04. 조건문과 반복문  (0) 2022.10.11
    '🤯TIL/JAVA' 카테고리의 다른 글
    • [연산자] 복합대입 연산자?
    • [이것이 자바다 - 연습문제] chapter 08. 인터페이스
    • [이것이 자바다 - 연습문제] chapter 06. 클래스
    • [이것이 자바다 - 연습문제] chapter 05. 참조 타입
    Dorothy_YANG
    Dorothy_YANG
    Slowly but Surely, 비전공 문과생의 개발공부

    티스토리툴바