JAVA/자바의 정석

[자바의 정석 - 기초편] 7. (6) 캡슐화 / 다형성

서영22 2023. 11. 30. 16:33

 

 캡슐화와 접근 제어자 

접근 제어자를 사용하는 이유?

 

 1. 외부로부터 데이터를 보호하기 위해서

 

 2. 외부에는 불필요한, 내부적으로만 사용되는 부분을 감추기 위해서 

 

 

 

< 예제 - 시간 바꾸기 >

 

특정 범위가 있는 변수들을 private으로 설정하여 외부 직접 접근을 막고, 메서드를 public으로 하여 메서드를 통해 간접 접근만 허용하도록 해야함

 

 

 

 다형성 (polymorphism) 

여러가지 형태를 가질 수 있는 능력

 

조상 타입 참조 변수자손 타입 객체를 다루는 것

 

- 자손타입의 참조 변수로 조상 타입의 객체를 가리킬 수 없음 (에러)

 

Tv t = new SmartTv();  // 타입이 불일치하지만 OK

 

조상 타입 Tv의 참조변수 t로 자손타입 SmartTv의 객체를 다룸

 

 

객체와 참조변수의 타입이 일치할 때와 일치하지 않을 때의 차이?

1. SmartTv s = new SmartTv();  // 참조변수 타입 == 인스턴스 타입
    ➔  SmartTv가 가진 7개 멤버 모두 사용 가능

2. Tv           s = new SmartTv();  // 참조변수 타입 != 인스턴스 타입   : 다형성
    ➔  Tv가 가진 5개 멤버만 사용 가능