* 오버라이딩 overriding
  - 메소드의 재정의
  - 부모클래스의 기능을 변경하거나 필요에 따라 확장을 필요로 할 때 사용. (확장성)
  - 부모클래스로부터 상속받은 메소드의 내용을 상속받는 클래스에 맞게 변경하는 것.(change,modify)
  - 현재 나한테 맞게 사용하기 위함.
  - 부모클래스가 가지는 메소드를 자식클래스에서 똑같이 새롭게 만들게 되면 더 이상 자식클래스에서

     이름이 같은 메소드를 호출할 수 없게 된다.

---------------------------------------

 

package oop5super;

//1. 메소드 원형이 다름으로 오버라이딩이 아니다. 단순상속.
class OverA {
    public void show(String str) {
        System.out.println("상위클래스의 메소드 show(String str) 수행 " + str);
    }
}

class SubOverA extends OverA {
    public void show() {
        System.out.println("하위클래스의 메소드 show() 수행");
    }
}

public class OverridingEx1 {
    public static void main(String[] args) {
        SubOverA over=new SubOverA();
        over.show();
        over.show("HAPPY");

    }

}

----------------------------------------

 

package oop5super;

//상위 클래스와 하위 클래스의 메소드 원형이 같음으로 Method Overriding이라고 한다.
class OverB {
    OverB() {}
    public void show() {
        int i =10;
        System.out.println("부모클래스의 show() " + i);
    }

    public void parent() {
        System.out.println("부모클래스에만 있는 메소드 parent()");
    }
}
//==========================
class SubOverB extends OverB {
    SubOverB(){};
    //overriding
    public void show(){
        double d= 10.5;
        System.out.println("자식클래스의 show() " + d);      
    }
}
public class OverridingEx2 {

    public static void main(String[] args) {
        SubOverB over=new SubOverB();
      //상속이 무시되면서 자식 클래스의 메소드가 수행된다.
        over.show();//10.5

    }

}
------------------------------------

 

package oop5super;

class TV {
    public TV(){
        System.out.println("TV 생성자");
    }   
}

class Movie extends TV{
    public Movie() {
        System.out.println("Movie 생성자");
    }//기본생성자   
}

class Action extends Movie{
    //자기클래스의 생성자 함수 호출 this()
    //this(); //Action()생성자 호출 
    public Action(){
        System.out.println("Action 생성자");
    }
    public Action(String name)
    {
        this();//기본생성자 호출
        System.out.println("액션영화제목:"+name);
    }

}

public class OverridingEx3 {
    public static void main(String[] args) {
      //상속관계에서는 부모클래스의 생성자가 먼저 실행된다.
      //Movie movie=new Movie();
        //TV()생성자 -> Movie()생성자
       
        Action action=new Action();
        //TV생성자->Movie생성자->Action생성자
       
        Action act=new Action("아바타");
       

    }
}

 

 

 

 

 

'..열심히 공부하세.. > JAVA 문법' 카테고리의 다른 글

[27] super, super()  (0) 2012.05.01
[26] 상속관계에서의 생성자  (0) 2012.05.01
[24] 상속  (0) 2012.05.01
[23] 접근제어자  (0) 2012.05.01
[22] final 키워드  (0) 2012.04.27

+ Recent posts