접근 제어자를 public에서 private으로 하여 외부에서 직접 접근하지 못하도록 할 수 있다.
메서드는 public 으로 하여 메서드를 통해 private 에 간접접근을 허용할 수 있다.
이것을 접근 제어자를 이용한 캡슐화라고 한다.
부모인 Tv 로 자식인 SmartTv 객체를 다루는 것이다.
Tv t = new SmartTv();
이렇게 타입을 불일치 시키는 것이다.
SmartTv s = new SmartTv(); // 참조변수와 인스턴스의 타입이 일치
Tv t = new SmartTv(); // 조상 타입 참조변수로 자손 타입 인스턴스 참조
객체와 참조변수의 타입이 일치하지 않다면, Tv 클래스에 정의된 멤버만 참조할 수 있다.
주의할 점은,
자손 타입의 참조변수로 조상 타입의 객체를 가르킬 수 없다.
SmartTv s = new Tv();
이러한 형식은 허용되지 않는다는 것이다!