티스토리 뷰

[java 21강] 오버라이딩 (Overriding,오버라이드,Override), 슈퍼 (super)



이번 강의에서는 오버라이딩 (Overriding), 슈퍼 (super) 에 대해서 알아보겠습니다.

이번 21강의를 알아보기전 자바 상속을 모르신다면!! 19강을 먼저 보시고 오셔야 이해가 쉽습니다.


( 19강 상속 바로가기 --> http://bvc12.tistory.com/176 )


상속을 하면 부모의 것을 모두 사용할수 있는 장점이 있습니다.

하지만 자식입장에서는 물려받은것을 다쓰고 싶지만.....

같은 이름으로 메소드를 다시 만들고 싶을때! 오버라이딩(오버라이드)을 하면됩니다.


오버라이드(Override) 사용 문법은..만들려고 하는 메소드 위에 @Override 를 작성해 주면 됩니다.


(오버라이드는 어노테이션의 종류입니다. @ 로 시작하는것이 어노테이션이라고 알아두기!)

(어노테이션은 이번강의말고 다른강의로 곧! 찾아뵐것입니다. 우선 자바에는 어노테이션이라는 것도 잇구나~ 로만 알고 계세요!)


그럼.. 메소드를 다시정의 해서 부모의 메소드를 못쓸까요?? 

아닙니다. 없어지는것이 아닙니다.

바로 슈퍼(super) 를 붙이면 부모의 객체에 접근을 할수 있습니다.


슈퍼(super)를 사용하는 문법은 상속받은 클레스에서 super.사용할메소드명 입니다.


그럼 바로 예제를 살펴보도록 하겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package test123123;
 
public class java21 {
 
    public static void main(String[] args) {
        B b = new B();
        b.test();
        b.test2();
    }
 
}
 
class A{
    int i =  0;
    
    public void test() {
        System.out.println("A 클래스의 i의 변수의 값:" + i);
    }
}
 
class B extends A{
    
    @Override
    public void test() {
        System.out.println("오버라이드 됨!!!");
    }
    
    public void test2() {
        super.test();
    }
}
cs


결과



위예제를 보면...

class A 를 만들어 주었습니다. (부모 클래스)

class B 만들면서 extends A 를 하였습니다. (자식클래스 B 를 만들면서 A 부모클래스를 상속하여 주었습니다.)


@Override
public void test() {
    System.out.println("오버라이드 됨!!!");
}


@Override (오버라이드) 하여 부모의 public void test() 메소드를 다시한번 자식클레스에 만들어 주었습니다.


public void test2() {
    super.test();
}


자식 클래스에 public void test2() 라는 메소드를 만드면서 super.test(); 통하여 부모의 test() 메소드를 실행할수 있도록 하였습니다.


public class java21 {
 
    public static void main(String[] args) {
        B b = new B();
        b.test();
        b.test2();
    }
 
}


B b = new B(); 클래스를 생성하였습니다.

그다음 b에 있는 test, test2 메소드를 실행하였습니다.

그결과 오버라이딩이된 test 메소드와, 부모에있는 test 메소드를 실행할수 있었습니다.


이렇게 오버라이드를 하여 자신이 원하는 메소드를 정의 할수 있고, 생성자 또한 가능합니다.

오버라이드를 했는대도 만약 부모의 메소드가 필요하다면 슈퍼를 붙여 상속받은 클레스에서 사용하면 됩니다.


이렇게 이번강의에서는 짧은 예제로 오버라이딩 (Overriding), 슈퍼 (super) 를 알아 보았습니다.

수고하세요! ^^

댓글