6월 2일 복습하기_1
1.캡슐화
접근제어자를 사용하는 이유는 외부로부터 데이터를 보호하기 위해서다.
위에 그림 처럼 변수를 private로 선언하여 직접접근을 막고,
getter 와 setter 메서드를 이용하여 간접접근 하게 하여 if문으로 어뚱한 값이 들어 가지 않게 하는것을 캡슐화 기능이다.
2.캡슐화는 유효성 체크 가능
if()문안에 조건문을 메서드로 빼서 유효성을 체크해주는 메서드로 만들고
if()문안에는 메서드자체를 매개변수로 받아 true이면 return 하게끔 만듬.
참고로 접근범위는 최대한 좁게 설정하고 필요에 따라 서서히 넓혀가는게 좋은 코드이다.
3.다형성
(1)조상타입 참조변수로 자식타입객체를 다루는것
Tv t= new SmartTv();
부모타입 참조변수t로 자식타입의SmartTv 객체를 다룰 수 있다.
(2)조상타입 참조변수로 자식객체에 접근할 수 있는건 조상타입의 멤버까지만 접근 가능. 즉, 자식객체만의 고유멤버는 조상타입 참조변수로 접근 못함.
(3)자손타입의 참조변수로 조상 타입의 객체를 가르킬 수 없다.
SmartTv s= new Tv();
4.참조변수의 형변환
(1)사용할 수 있는 멤버의 갯수를 조절하는 것->리모콘 바꾸기
(2)조상 자손 관계에서는 형변환이 가능하나, 형제 관계에서는 형변환이 어렵다.
(3)자손타입의 참조변수로 형변환시 형변환타입 써줘야함!
FireEngine f=new FireEngine(); //FireEngine인스턴스 생성
Car c=f; //조상 타입의 참조변수<-자손타입의 참조변수 형변환
FireEngine fe=(FireEngine)c; //자손타입의 참조변수<-조상 타입의 참조변수 이때, 형변환타입 써줘야함!
형변환한 조상타입 변수를 다시 자식타입변수로 형변환가능(되돌리기기능)
단, 형변환을 써줘야한다.
Car c = new FireEngine(); ->조상타입으로 형변환
FireEngine f=(FireEngine)Car; ->다시 자식타입으로 형변환,단! 형변환하는 자식타입 써줘야함.
5.실제인스턴스 멤버갯수가 최대 몇개있는지, 어떤 타입의 리모콘으로 객체를 다루는지 아는게 중요
왜?리모콘은 객체를 가르킴 이 객체가 자식타입 객체로 5개의 멤버가 있다면 자식타입리모콘으로는 최대 5개, 부모타입리모콘으로는 상속한갯수만큼만 다룰수 있다
6.형변화시 젤 중요한거 실제인스턴스가 무엇인지(멤버갯수몇개)가 젤 중요!!!!!!!!!!!!!!!!!!
참조변수가 가르키는 실제 인스턴스의 멤버갯수가 몇개인지 확인하고,
참조변수는 멤버갯수를 넘으면 안된다!!!!!