Java/Java 기초

자바의 꽃 상속과 오버라이딩

낙락장송s 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() 메서드


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