남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.
캡슐화와 접근제어자
접근제어자를 사용하는 이유?
- 외부로부터 데이터를 보호하기 위해서
- 외부에는 불필요한, 내부적으로만 사용되는 부분을 감추기 위해서
다형성 (polymorhphism)
- 여러 가지 형태를 가질 수 있는 능력
- 조상 타입 참조 변수로 자손 타입 객체를 다루는 것
- 자손 타입의 참조 변수로 조상 타입의 객체를 가리킬 수 없다.
조상 자손
Tv t = new SmartTv(); // Tv와 SmartTv 타입 불일치
SmartTv s = new Tv(); // 에러
자손 조상
class Tv{
boolean Power;
int channel;
void power(){power = !power;}
void channelUp() { ++channel;}
void channelDown() { --channel;}
}
class SmartTv extends Tv{
String text;
void caption() { ......}
}
SmartTv s = new SmartTv(); // 참조변수와 인스턴스 타입 일치 > 7개의 기능 모두 사용 가능
Tv t = new SmartTv(); // 조상타입 참조변수로 자손 타입 인스턴스 참조 > 7개의 기능이 있다고 해도 5개의 기능만 사용 가능
* 참조변수의 타입은 인스턴스의 타입과 반드시 일치하는 건 아님(다형성)
ex) Tv t = new SmartTv();
* 참조변수가 조상타입일 떄와 자손타입일 떄의 차이는 참조변수로 사용할 수 있는 멤버의 갯수가 달라짐
* 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수는 없음!
'프로그래밍 > JAVA' 카테고리의 다른 글
자바의 정석 기초 ( 매개변수 다형성 / 하나의 배열에 여러 종류 객체 저장 ) (0) | 2020.07.12 |
---|---|
자바의 정석 기초 ( 참조변수의 형변환 / instanceof 연산자 ) (0) | 2020.07.12 |
자바의 정석 기초 ( 제어자 / 접근 제어자 / public / protected / default / private ) (0) | 2020.07.12 |
자바의 정석 기초 ( 패키지 / 패키지 선언 / 클래스 패스 / import문 / static import문 ) (0) | 2020.07.10 |
자바의 정석 기초 ( 참조변수 super / 생성자 super() ) (0) | 2020.07.10 |
댓글