접근 제어자를 사용하는 이유
public class Time {
// private 접근 제어자로 외부 직접 접근 방지 ❌
private int hour;
// 메서드를 통한 간접 접근 허용 ✅
public int getHour() { return Hour; } // getter read
public void setHour(int hour) { // setter write
if (hour < 0 || hour > 23) return; // 값을 보호
this.hour = hour;
class TimeMain {
public static void main(String[] args){
Time t = new Time();
t.setHour(21); // 메서드를 통한 변경
System.out.println(t.getHour()); // 메서드를 통한 읽기
return
문 적용Tv t = new SmartTv(); // 타입 불일치 OK ✅
SmartTv s = new SmartTv(); // 참조 변수와 인스턴스의 타입 일치
Tv t = new SmartTv(); // 조상 참조 변수로 자손 인스턴스 참조
Tv t = new SmartTv(); // 조상 참조변수 -> 자손 객체 허용 ✅
SmartTv s = new Tv(); // 에러, 반대는 허용 안 됨 ❌