inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 자바 - 기본편

문제와 풀이

상속 관계와 캡슐화 질문

해결된 질문

459

9kku2

작성한 질문수 5

1

안녕하세요 영한님 강의 잘 보고 있습니다.

상속 관계와 캡슐화에 대해 궁금증이 있어 질문 남깁니다.

 

문제를 풀 때 부모와 자식은 각각 별도로 생성되지만, 하나의 묶음으로 생각되어 자식 클래스에서 부모 클래스의 필드에 직접 접근 가능하여야 한다 생각했습니다

그리하여 부모 클래스의 필드를 protected로 생성하여 풀었는데, 영한님 문제 풀이를 보니 private 으로 감추시는걸 보고 의문점이 생겼습니다

private으로 감춘다면 기존 부모 클래스 기능을 오버라이딩 하여 부모 필드에 접근이 필요 할 때는 getter/setter 같은 메소드를 만들어서 접근 해야 하는 걸까요?

아래는 Car Classmove 메소드를 GasCar Class가 재정의 하는 코드를 간략하게 작성해보았습니다

public class Car {
  private int speed;
	
  public void move(){
	speed++;
        System.out.println("speed : " + speed);
  }
  protected int getSpeed() {
	return speed;
  }
  protected void setSpeed(int speed) {
	this.speed = speed;
  }
}


public class GasCar extends Car{

  @Override
  public void move() {
	int speed = getSpeed() + 2;
	setSpeed(speed);
	System.out.println("speed : " + speed);
  }
}

따라서 상속 관계라도 일반 객체를 사용하는 입장과 동일하게 캡슐화를 해야 하고, 확장의 여지를 두고 부모 클래스의 필드에 접근하는 메소드를 만들어야 하는것인지 궁금합니다!

 

java 객체지향

답변 1

4

김영한

안녕하세요. 9kku2님

캡슐화는 상속 관계에서도 마찬가지로 적용됩니다 :)

따라서 자식이 부모의 필드에 직접 접근하는 것 보다는 부모의 메서드를 통해서 접근하는 것이 더 나은 선택입니다.

단순한 예로 부모의 필드를 private으로 사용해서 자식에서 직접 접근하지 못하게 막으면, 자식 클래스가 10개 있다고 가정했을 때 부모의 필드 이름이 변경되어도 부모의 메서드 내부만 변경한다면 모든 자식 클래스의 코드는 변경하지 않아도 되겠지요?

도움이 되셨길 바래요.

3

9kku2

감사합니다 ^^

질문있습니다

0

26

1

1번 문제 질문입니다.

0

31

1

음악플레이어 문제 중 코드질문

0

26

1

9장 상속 문제와 풀이 질문

0

38

1

강의 자료에 사소한 오타가 있습니다.

0

48

2

매서드 참조값 반환??

0

66

1

접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드

0

69

1

자바 기본편 - .(dot)에 관한 질문입니다!

0

85

1

공부방법

0

74

2

상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?

0

82

1

static method 질문

0

66

1

캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요

0

95

1

Method1에서 Student 객체

0

73

1

3강 18. null 질문

0

67

1

this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?

0

75

1

팩토리 메서드 패턴과 일반 생성자 사용의 장단점

0

97

1

문의

0

104

1

9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다

0

89

1

상속과 그에 따른 메모리 구조 질문

0

62

1

call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다

0

74

1

수강기한

0

135

1

기본편 객체지향 프로그래밍에 대한 정의

0

86

1

섹션10 상속 메모리 구조 및 문제 관련 질문

0

87

1

추가 지식 학습

0

152

2