-
[자바의 정석] ch7-21 ~ ch7-23 객체지향 개념 정리 (접근제어자, 캡슐화, 다형성)Programming Language/Java 2021. 7. 24. 02:45
ch7-21 접근 제어자(access modifier)
private : 같은 클래스 내에서만 접근이 가능함
(default) : 같은 패키지 내에서만 접근이 가능함
protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근이 가능함
public : 접근 제한이 전혀없음
접근제한없음 같은 패키지 + 자손 같은 패키지 같은 클래스
public > protected > (default) > private
제어자 같은 클래스 같은 패키지 자손 클래스 전체 public O O O O protected O O O (default) O O private O *쉽게 생각하면, private 는 같은 파일 내부이고 default는 같은 폴더 내부이며, protected는 같은폴더 + 자손이라고 볼 수 있음
상단의 스크린샷을 통해 접근제어자의 접근 범위를 알 수 있음.
ch7-22 캡슐화와 접근 제어자
- 접근 제어자를 사용하는 이유
(1) 외부로부터 데이터를 보호하기 위해서
(2) 외부에는 불필요한, 내부적으로만 사용되는 부분을 감추기 위해서
ch7-23 다형성(polymorphism) -> 매우 중요!!
- 여러 가지 형태를 가질 수 있는 능력
- 조상 타입 참조 변수로 자손 타입 객체를 다루는 것
1234567891011121314151617181920212223Tv t = new SmartTv(); //타입 불일치 -> 하지만 다형성으로 인하여 사용 가능//타입Tv t = new Tv();SmartTv s = new SmartTv();class Tv{boolean power; //전원상태(on/off)int channel; //채널void power() { power = !power; }void channelUp() { ++channel; }void channelDown() { --channel; }}class SmartTv extends Tv {String text; //캡션(자막)을 보여 주기 위한 문자열void caption() { /*내용생략*/}}cs - 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없음
(예를 들어, 스마트Tv 리모콘으로 Tv의 기능을 모두 사용할 수 있으나 Tv 리모콘으로 SmartTv의 기능을 모두 사용할 수 없다는 것과 비슷한 맥락임)
<-------------------------------------------------------------정리------------------------------------------------------------->
Q. 참조변수의 타입은 인스턴스의 타입과 반드시 일치해야 하는지?
A. 아니다. 일치하는 것이 보통이지만 일치하지 않을 수도 있음
Q. 참조변수가 조상타입일 때와 자손타입일 때의 차이?
A. 참조변수로 사용할 수 있는 멤버의 갯수가 달라짐
Q. 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 있나?
A. 아니다. 허용되지 않음
============================================================================
'Programming Language > Java' 카테고리의 다른 글