본문 바로가기
프로그래밍/JAVA

자바의 정석 기초 ( 캡슐화 / 다형성)

by ✲ 2020. 7. 12.
반응형

남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다. 

캡슐화와 접근제어자 

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

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

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

 

다형성 (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(); 

* 참조변수가 조상타입일 떄와 자손타입일 떄의 차이는 참조변수로 사용할 수 있는 멤버의 갯수가 달라짐 

* 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수는 없음! 

반응형

댓글