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

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

 

// 생성자를 이용한 인스턴스의 복사랍니다.
// 이건 보니깐 인스턴스의 복사보다는 클래스를 복사해서 쓰는것 같은데..
//공부를 쫌더 해보면서 이해를 해보자.. 만만치 않네..그려.ㅋ

package JavaTest;

class Car3{
 String color;                     //늘 그렇듯이 클래스잡고 매개변수 선언해주고~
 String gearType;
 int door;
 
 //메서드?ㅋ 생성자 들어갑니다.
 Car3(){                                 //매개변수가 아무것도 없는 Car 생성자
  this("white","auto",4);      //빨간줄 뜬다..아직 밑에 선언을 안해서~~ㅠ
 }
 
 Car3(String color,String gearType, int door){      //자~ 매개변수 3개짜리 앞에서 배운대로 업그레이드해서 선언
  this.color = color;
  this.gearType = gearType;
  this.door = door;
 }
 
 //생성자 하나 더 생성할껀데.. 바로 맨 처음에 있는 매개변수가 없는 Car3() 놈을 복사해서 써보겠어~이거 인스턴스복사와 관련있음
 Car3(Car3 c){            //매개변수가 들어갈 자리에 참조변수를 선언했어..참 웃기게 생겼지만 어쨋든 얘는 매개변수1개짜리임
  color = c.color;
  gearType = c.gearType;             //앞전이랑 쫌 많이 틀리다. 뒤에서 부터 해석들어가는거 기억하자!
  door = c.door;
 }
 
}

public class CarTest3 {

 public static void main(String[] args) {

  //자! 그럼 메인에서 한번 살펴보자!
  //인스턴스 생성
  Car3 c1 = new Car3();         //매개변수가 없는 생성자 인스턴스
  Car3 c2 = new Car3(c1);      //머야?? 여기있었자나 인스턴스 c1을 c2가 복사한게..이게 복사랍니다.헐..
                                       //그럼 저위에 Car3(Car3 c)는 복사가 아닌었던것이네....흠..생각생각
  
  System.out.println(c1.color+","+c1.gearType+","+c1.door);
  System.out.println(c2.color+","+c2.gearType+","+c2.door);
  // 결과 값은 똑같네...저런 방식으로 복사가 된다는것을 보여주는것 같아..결국...이것도 문법인가보다..
  //반복해서 자주 보는 수밖에..
  
  c1.door = 100;              //이건 c1의 door 만 바꿨엉~ 아래 결과를 보니..저장 공간이 다르다는것을 보여줌
  System.out.println(c1.color+","+c1.gearType+","+c1.door);
  System.out.println(c2.color+","+c2.gearType+","+c2.door);
  
 }

}

 

Posted by 옆모습오빠
: