'오버라이딩'에 해당되는 글 2건

  1. 2013.06.07 Super,Super() 조상클래스 생성자 만들기
  2. 2013.06.06 오버라이딩(Overriding)

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

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

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

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

 

//P.239 오버라이딩~(overriding)
//앞전에 오버로딩에 대하여 MyMath3 으로 만든것이 있었다. 똑같은 예문에 추가로
//오버라이딩에 대하여 정의 해볼께요~~~
//따라와랏!!!

package JavaTest;

//우선 클래스 정의를 합죠! 앞에서 했던거 복사했음 (-_-)v

class MyMath{
 
 int method = 0;
 
 int add(int a, int b) {           //메서드~
  return a + b;
 }

 long add(int a, long b) {      //메서드~
  return a + b;
 } 
  

 long add(long a, int b) {      //메서드~
  return a + b;
 } 
  

 long add(long a, long b) {    //메서드~
  return a + b;
 }
 
 int method(){
  
  return ++method;                       //오버라이딩 추가 설명을 위해 추가함!
 }
}

///////여기까지는 오버로딩인거 알쥐? 매개변수 값만 달리 해주는것!~~~ Pass~~~

 

class MyMath6 extends MyMath{      //자~ 위에 MyMath 를 상속 받아 보았습니다.
 
 //오버라이딩 시작하겠습니다. 위에 있는 첫번째 메서드를 변경하겠습니다.!
 
 int add(int a, int b){            //이거 오버라이딩이얌! 위에꺼 그대로 똑같이 써놓고 먼 말이냐고?
  return a + b;                 //상황상 왼쪽은 이렇게 써놓았지만 내용은 완전히 다르게 하는거쥐~
 }                                      // 아~ 이 예문은 아무래도 적절치 않은것으로 보인다 하나더 추가할께!
 
 int method(){                   //자 이 예문을 보면 이해가 되나?? 역시 자바의 세계는 헷갈려~~
  
  return --method;                       // (~_~)/
 }
 
}

public class MyMath4 {

 public static void main(String[] args) {

  MyMath6 mm = new MyMath6();

  System.out.println(mm.add(3, 3));
  System.out.println(mm.add(3, 3L));
  System.out.println(mm.add(3L, 3));
  System.out.println(mm.add(3L, 3L));
  System.out.println(mm.method());   //요놈이 바로 메서드 오버라이딩을 해서 나온값입뉘다!!!

 }

}

//전에 적어 놨던 예문 때문에 조금 헷갈리고 난잡해 보이지만 '오버로딩'도 기억할겸 같이 적어서 만들어 보았음!
//책의 예문은 너무 이론에만 충실해서리.. 참고하길 바래요~

'::::특별한 Java Story' 카테고리의 다른 글

제어자,static,final  (0) 2013.06.08
Super,Super() 조상클래스 생성자 만들기  (0) 2013.06.07
단일상속(single inheritance)  (0) 2013.06.06
클래스간의 관계(포함관계) has-a  (0) 2013.06.06
상속(inheritance)  (0) 2013.06.06
Posted by 옆모습오빠
: