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

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

 

//P.241~246 super,super() 조상클래스 생성자
//앞전까지 상속하고,오버라이딩 하는것까지 정리했는데..오버라이딩의 마지막 super 를 한번 보겠어~
//생각보다 내용은 쉽다! 역시 이런건 딱딱 지적하면서 정리하는게 최고당~!^
//책은 예문을 쫌 많이 쪼개 놨는데, 난 한꺼번에 적어서 이것저것 다 정리해보겠어!
//GoGo~~!!


package JavaTest;

class Point{                     //부모클래스
 
 int x, y;                      //Point 클래스에 인스턴스 변수 x,y 를 선언~
 
 Point(int x,int y){         //매개변수 2개를 갖는 생성자를 만들었음
  this.x = x;
  this.y = y;
 }
 
 String getLocation(){    //메서드도 하나 만들어줬엉~홍홍!
  return x+","+y;
 }
}

class Point3D extends Point{       //자~다음은 Point 를 상속받는 Point3D 자식클래스~~
 
 int z;                                    //z 인스턴스 변수 하나 추가해주고~
 
 Point3D(){                             //매개변수 없는 생성자를 하나 만들어 봤어~
  this(100,200,300);              //빨간줄 뜨지? 3개의 매개변수를 갖는 생성자를 호출하는거쥐~근데
 }                                          //3개짜리 생성자를 아직 만들지 않아서 빨갱이가 뜬다~~밑에 만들어보자
 
 Point3D(int x,int y,int z){
  super(x,y);                        //★★★  드디어~ 납셨다! super() 이놈은 바로 생성자 안에서 쓰이는 놈이다
  this.z = z;                         // 부모클래스에 있는 Point(int x,int y) 생성자를 상속 받아서 쓸려면 super를
 }                                          //사용해야 한다는 거지요~~(앞전에 생성자는 상속 안된다고 했엉~기억하지?
                                             // 생성자에서 상속을 받으려면 super를 사용해야한다는것 기억하자!!외워!!임뫄!(-_-)ㅗ
              
                                             //Tip : super 와 super() 는 사용용도가 엄연히 다르당! 멍충아! 맨밑에다 정리할께!
 
 String getLocation(){
  return super.getLocation()+","+z;   //★★★ 자 여기도! 부모 클래스의 메서드를 새롭게 정의하는것도
 }                                                      // super를 사용하여 명확히 구분 짖는것도 좋다는~
                                                        //밑에 주석 처리한것처럼 사용하여도 상관은 없다..같은 내용이니~
 /*String getLocation(){                        //단, 여기서는 super의 사용 용도에 대하여 정리해봤엉~
  return x+","+y+","+z;                     //문) 이렇게 **부모클래스의 메서드**를 새롭게 정의하는걸 머라고 하나요??    
 }*/                                                   //정답) 오X라X딩~~
}


public class SuperTest {

 public static void main(String[] args) {

  //그럼 잘 되는지 출력해보자!꾸낭!ㅋ
  
  Point3D p3 = new Point3D();       //인스턴스화 시키고,
  System.out.println(p3.x);             //출력!
  System.out.println(p3.y);
  System.out.println(p3.z);
  
  System.out.println(p3.getLocation());   //메서드도 잘 출력되네욤!
  
 }

}

// ① super 는 조상클래스로 부터 받은 멤버변수를 참조할때 사용하는 변수!
// ② super() 는 조상클래스의 생성자를 호출하는데 사용하는 생성자!                  까오~ 이거 !!외워!이해해!! ㅋ
// 다음주에 물어봐서 모르면 뒤짐!

Posted by 옆모습오빠
:

//생성자 입니다.^^ 내용을 보아하니 '인스턴스 초기화 메서드'라고 하네..
//얼래?인스턴스 XX화?? 많이 듣던 놈인데...한번 보니..new 어쩌구 저쩌구에서 나왔던 놈이다..
//바로 '인스턴스 변수'를 사용하려면 사실 'new'를 이용하여 '인스턴스화'를 시키자너~~
//근데 글쎄.. 그동안 앞에서 썼던 클래스안에 자동으로(기본)으로 기본 생성자를 그동안 알아서 만들어 줬다네..
//예문을 보자!

package JavaTest;

class Data1{                        //Data1이라는 클래스를 하나 만들었어..그안에 int 로 value값을 만들었고..
 int value;
}

class Data2{                       //Data2라는 클래스를 하나 만들었고.. 똑같이 value를 하나 선언했어..
 int value;
 
 //Data2(){};               // ★<-- 이친구는 저 밑에서 설명할께 지금은 쌩까~!
 
 Data2(int x){                  //요놈이 바로 '생성자' ~~ 첨엔 메서드 처럼 보였는데...앞에 아무것도 없자나..void라든가
  value = x;                  // 형식이 없어서... 생성자 형식은 "클래스(){}" <--요거임 간단하네~ㅋ
 }                                   //근데 잘 봐야 하는게...Data2하고 그안에 매개변수 x라는 놈이 하나 있어...
}                                       // 매개변수 형식 하고 개수 요놈을 잘 기억해야해..


public class ConstructorTest {

 public static void main(String[] args) {

  //자 그럼~~ main에서 한번 사용해보자! 우선 클래스 안에 '인스턴스 변수'를 써먹어야 하니 인스턴스화 시키자!
  Data1 d1 = new Data1();
  //Data2 d2 = new Data2();    //<-- 썅~ 빨간줄 뜬다.....감이 오지? Data2클래스에서 생성자로 '초기화'를 어떤식으로
                                          // 시켰냐면  'int x'로 한개를 초기화해랏!!하고 시켰으면서 정작 밑에서는 () <-아무것도
                                          //없는 놈을 '인스턴스화' 시켜라 하니 빨갱이 줄이 떠버렸어.. 여기까지 이해됐으면 PASS
  
  Data2 d2 = new Data2(10);   // <--요게 바로 정답이쥐~!! int x 요값을 넣어주면 형식도 맞고 갯수도 맞고 딱이지.ㅋ  
  
                                            //★ 별표시된거 봤지? 위에거 안쓸려면 두개 똑같이 비워주면 된다는것! 에효 정신없다.ㅋ
 }

}

 

Posted by 옆모습오빠
:

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

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 옆모습오빠
:

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

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

 

//생성자에서 다른 생성자 호출하기 this(), this
//생성자 끼리 서로 호출해서 쓰는거랍니다..굳이 그럴 필요가 있을까??싶다..한번 보기로 하지요~
//바로 예문입니다.

package JavaTest;

class Car2{
 String color;
 String gearType;
 int door;
 
 Car2(){
  this("white","Auto",4);       //헐..이게 머야..이렇게 바로 쓰면 빨간줄이..후덜덜..;; 근데 이놈은 코딩하는놈이 이런
 }                                        //생각을 하고 쓴거야.. "난 밑에다가 Car 생성자를 만들껀데..매개변수가 저렇게 3개 있는
                                          //놈을 쓸거야..그러니 3개 있는놈을 가져다 쓸거라서 this 하고 3개의 매개변수 지정한거야!"라고.
 
 Car2(String color, String gearType, int door){    //요거 앞에서 본거다.ㅋ 매개변수에 저렇게 주소값이 아닌 값을 정확히
  this.color = color;                                    //지정하면 여기서처럼 자기자신 값 color = color 다..라고 하는 불상사??
  this.gearType = gearType;                        //가 생기기 때문에..this.라고 명시를 해주는거였구나..이거 무슨 규칙같다.
  this.door = door;
 }
 
 Car2(String color){                     //넌 또 머니? 매개변수는 딸랑 하나...
  this(color,"stick",2);             //3개짜리 호출했는데..color 만큼은 자기 자신것을 쓴다고 하네..
 }
 
 
 
}

public class CarTest2 {

 public static void main(String[] args) {

  //결과를 한번 출력해보자~ 인스턴화~
  Car2 c1 = new Car2();            //매개변수가 아무것도 없는놈 하지만..3개짜리를 불러서 쓰기때문에..
  
  Car2 c2 = new Car2("black");   //이놈은 매개변수 한개짜리 생성자 인스턴스 시키네..
  
  //두개만 결과를 따지고 보면
  
  System.out.println(c1.color+","+c1.gearType+","+c1.door);
  System.out.println(c2.color+","+c2.gearType+","+c2.door);
  
  //그럼 두번째에 있는 생성자(3개짜리)도 시간되는데 한번 써먹어볼께~다이렉트로!
  
  Car2 c3 = new Car2("yellow","Auto",3);
  System.out.println(c3.color+","+c3.gearType+","+c3.door);  //괜찮네..그려~~ㅋㅋ
  
 }

}

 

Posted by 옆모습오빠
:

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

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

 

// 매개변수가 있는 생성자~~~
//이건 예문을 보면서~~

package JavaTest;

class Car{                               //클래스 만들고, '인스턴스 변수'도 만들어주고~~
 String color;
 String gearType;
 int door;
 
 Car(){}                                    //① : 매개변수 하나도 없는 생성자 하나 만들고,
 Car(String c, String g, int d){   //매개변수 3개짜리 생성자도 만들었는데.. 쫌..그렇네..
  color = c;                             //이거 아래 처럼 쓸수 있을거 같은데 한번 써볼께..
  gearType = g;
  door = d;
 }
 
 /*Car(String color,String gearType, int door){       //② : 후훗..이렇게도 돼네..그말이 그말이네..
                                                                //먼가 담는 역할때문에 그런가...위처럼 쓴것은 ????
 }*/                                                               //이거 알아냈다..밑에 출력하니깐..null값 나옴..이유..
}                                                                      //헐..뒤에 이놈 이거..this 와 관련되니 뒤로 가서 설명할께.~
                                                                        //또..헐...근데 이게 더 좋은 방법이라네..난 천재인가?!
                                                                        //밑에다가 명시를 안해줬을뿐이지...난 천재다.ㅋ

public class CarTest {

 public static void main(String[] args) {

  //자 ~ 그럼 또 클래스를 사용하기 위해 인스턴스화를 시켜보겠숨돠~
  
  Car c1 = new Car();              //① : 여기는 위에 매개변수가 없는 생성자 '문제의놈1번' 을 활용했어~
  c1.color = "white";                // 각각의 값을 또 정의해줬고,, 어지간히 했으니 이젠 설명 생략할래~ㅎ
  c1.gearType = "stick";
  c1.door = 4;

  Car c2 = new Car("black","Auto",2);  //② 이놈 사용하는거 봤지??! 바로 이거임..변수값을 써주면 딱!
  
  //출력해보겠숨돠~~!
  
  System.out.println(c1.color+","+c1.gearType+","+c1.door);
  System.out.println(c2.color+","+c2.gearType+","+c2.door);
  
  
 }

}

 

Posted by 옆모습오빠
: