ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바의 꽃 상속과 오버라이딩
    Java/Java 기초 2012. 6. 24. 00:21

    이번엔 상속에 대해 알아보겠습니다. (어제 노느라 포스팅 못했습니다. 죄송합니다ㅠ)

     

    상속이란?

    오버로딩이랑 비슷한 개념입니다. 말 그대로 상속한다는 건데 앞에 있는 클래스의 객체를 상속받아 그대로 사용한다는 것입니다. 물론 틀만 사용하는 것이지요. 상속은 간단합니다. 그리고 상속은 여러가지의 특성이 있는데 한가지 알아보겠습니다.

     

     

    01   class A1{
    02    int first;   // first라는 변수를 생성합니다.
    03   }
    04   class A2 extends A1{   // 클래스 A2를 생성하고 A1을 상속받기 위해 extends A1를 적습니다.
    05    double first// 여기서 중요한데 이 때 클래스 A1의 객체 first는 묻힙니다.
    06   }
    07   public class Inh {
    08    public static void main(String args[]){
    09     A2 a2 = new A2(); 
    10     a2.first = 10.0;
    11     System.out.println("a2에 저장되어 있는 first 값 : " +a2.first); //여기서 결과값이 10.0이 나옵니다.
    12     A1 a1 = new A1();
    13     a1.first=10;
    14     System.out.println("a1에 저장되어 있는 first 값 : " +a1.first);  //여기서 결과값이 10이 나옵니다.
    15    }
    16   }
     

     

    결과

     

     a2에 저장되어 있는 first값 : 10.0

     a1에 저장되어 있는 first값 : 10

     

    이런식으로 클래스를 상속 받은 후에 이름이 같은 변수를 생성할 경우 상위클래스의 객체는 묻힙니다. 이 것이 바로 오버라이딩입니다.

     

     

     

    오버라이딩이란?

    상속 클래스와 피상속 클래스간에 같은 이름의 메소드를 정의하는 것을 말합니다. 그런데 만약 자신이 상위 클래스의 객체도 표현하고 싶다면 하위 클래스 메서드에 super를 붙여주면 됩니다. 예제를 보겠습니다.

     

     

    01   class displ1{
    02    void display(){
    03     System.out.println("상위클래스의 display() 메서드");
    04    }
    05   }
    06   class displ2 extends displ1{  //displ1 클래스를 상속합니다.
    07    void display(){   // 상위 클래스와 동일한 메서드를 만들어 오버라이딩합니다.
    08     System.out.println("하위클래스의 display() 메서드");
    09    }
    10    void view() {
    11     display();
    12     super.display();  //여기서 super를 붙입니다. 이 때 상위 클래스의 메서드가 결과값에 보여집니다.
    13    }
    14   }
    15   public class Oversuper {
    16    public static void main(String args[])
    17    {
    18     displ2 dis = new displ2();
    19     dis.view();
    20    }
    21   }
     

     

    결과

     

     하위클래스의 display() 메서드

     상위클래스의 display() 메서드


    추천은 블로거에게 큰 힘이 됩니다.

    'Java > Java 기초' 카테고리의 다른 글

    자바 스레드  (0) 2012.07.13
    자바 추상 클래스  (0) 2012.06.30
    Java 멤버변수  (0) 2012.06.21
    Java 클래스 오버로딩  (0) 2012.06.21
    Java 3차 배열  (0) 2012.06.21

    댓글

Designed by Tistory.