'Public'에 해당되는 글 1건

  1. 2013.06.09 접근 제어자(Access modifier) / 캡슐화(encapsulation)

/*내용을 복사 한 후 이클립스에서

ctrl + shift + F를 눌러주세요!!*/

 

 

//P.258~261 접근 제어자(Access modifier) / 캡슐화(encapsulation)
//다른 책에서는 맨 앞에 나왔있는데, 정석에서는 중간쯤에 나오네...암튼~~ 나왔으니 한번 더 집고 넘어가자!
//사실 public , default , private 는 자기의 영역이 확실하니 기억하기가 쉬운데...
// 이놈 protected 가 신경이 쫌 쓰인다... 이놈을 쓸일이 있을까?? 정도의 생각..
// 의미는 같은 패키지와 자손 클래스까지 허용이 된다는데.~~~ 아무래도 예문을 한번 보면서 확인이 제일 빠를듯!
// 시작합니다~~Start!!!


package JavaTest;

//시간에 관련하여 작성하겠슴돠~ 앞에서 한번 한것 같은데.ㅋ 늘 그렇듯이 클래스 생성

class Time{
 
 protected int hour;       //hour 변수만 protected 로 했어요! 밑에서 한번 콕 찝어서 한번 보구 갈려구! 기억하셈!
 private int minute;      
 private int second;       //분,초는 private 로 ~  "난 니들을 이 클래스 안에서만 쓰겠어! 딴데 갈 생각 꿈도 꾸지마랏!!"
 
 
 Time(int hour){            //한개짜리 매개변수 생성자 하나 만들었어요! protected 살펴볼려고 만든거랍니다....
  
  setHour(hour);
 }
 
 
 Time(int hour, int minute, int second){  //매개변수 3개짜리 생성자 하나 만들었어~ 왜냐고? 맨밑에서 출력할때
                                                      //시간좀 표시할때 초기값으로 써먹어야 해서..바로 앞에서 공부했자나.ㅠ
  //this.hour = hour;                 
  //this.minute = minute;                   //근데~이렇게 안쓰고 밑에 처럼 쓴건~ 시간에 대한 제약 조건을 메서드로
  //this.second = second;                   //만들려고 그런거야... 30시 머~ 막이런건 틀린거자나..그거 만들려고
  
  setHour(hour);
  setMinute(minute);                         //이렇게! 생성자 안에다가 결과물 메서드를 나열해 봤어~
  setSecond(second);
  
 }
 
 
 
 public int getHour(){               //시간값을 얻는 메서드를 만들었어
  
  return hour;
 }
 
 public void setHour(int hour){   //시간을 설정하는 매개변수를 1개 갖는 메서드 (여기서는 void 쓰는것) 조심!!!!
  
  if(hour<0 || hour>23){       //아~이거 앞에서 했었는데..열나 짜증났던..ㅋㅋ
   return ;                       //0보다 작거나 혹은 23시보다 크면(false / false)면 아무것도 돌려주지 마랏!! '0'이겠네..
  }else{
   this.hour = hour;           //하나라도 true 면 여기로~ hour 를 설정!
  }
 }
 
 public int getMinute(){
  
  return minute;
 }
 
 
 public void setMinute(int minute){
  
  if(minute<0 || minute>59){
   return;
  }else{
   this.minute = minute;
  }
 }
 
 public int getSecond(){
  
  return second;
 }
 
 public void setSecond(int second){
  
  if(second<0 || second>59){
   return;
  }else{
   this.second = second;
  }
 }
 
 ///여기까지 get, set 을 이용하여 시간,분,초를 각각 조건에 맞게 꾸민거야! 몇번 써보니 외워지네~그려~
 
 
 public String toString(){                  //넌 머니??!!! 안되겠다..요거 다음에 toString 메서드 한번 살펴볼께!
  
  return hour+":"+minute+":"+second;        //간단히 말하면 '문자열로 돌려줘라~~'
 }
 
}


class Time2 extends Time{        //자!!! 여기가 바로!!! 상속을 만들었어~ 원래는 다른 패키지에서 이런식으로 상속을
                                            //받아야 하지만~ 그냥 다른 패키지에서 상속받았다 생각하고 보면 돼!
 
 Time2(int hour) {                  
  super(hour);
 }

 void pt(){
  System.out.println(hour);    //간단히 시간만 출력~~
 }
 
}


public class TmieTest {

 public static void main(String[] args) {

  Time t = new Time(11, 30, 50);          //매개변수 3개짜리 생성자가 있어서..이렇게 인자값을 3개 써줬어~ㅋ
                                                        //시간,분,초~~ 테스트 삼아서 맨 앞 변수에 30,40 막 이렇게 넣어봐
                                                        //어디어디에 에러가 나는지 알게 될거야~ㅋ
  
  System.out.println(t.getHour()+":"+t.getMinute()+":"+t.getSecond());   //자 출력!!! 잘된다.!ㅋ
  System.out.println(t.toString());
  System.out.println(t);
  
  
  Time2 t2 = new Time2(17);       //욘석이 상속받은 메서드를 호출하는 인스턴스~
  System.out.println(t2);              //출력~~
  

//t.hour = 20;     //이녀석이 설명이 하나 나와있는데...private 는 클래스 안에서만!! 접근 허용 그러니깐
  //지금 코드에서는 메서드에서만 접근이 가능하다는 이야기~뷁! (-_-)ㅗ
 }
}


//와~ protected 는 곰곰히 생각해보면 나중에 회사 유지보수를 한다던가 할때 분석이 장난이 아닐듯 싶다..완전 기존 개발자가
// protected 를 많이 써놓았다면.................거미줄............처럼 되있을듯하다...물론.....이게 바로 자바의 3대 객체 지향의
//개념중.........캡슐화이기는 하지만...........아오~~~ 복습만이 살길인듯 싶다...내일이면 또 까먹겠지..ㅠ_ㅠ

Posted by 옆모습오빠
: