언어&프레임워크/Java

상속시 사용되는 this와 super(java)

밍풀 2022. 8. 31. 23:22

this 자기자신

super 부모를 나타냄

 

부모클래스 재정의 하는 경우, 만약 부모클래스 sum메소드가 복잡한 기능이라서, return 자리에 a+b가 아닌 굉장히 복잡한 식이 존재한다면 ? 자식클래스에 그대로 가져다 쓰는게 중복이고 비효율임

 

이럴때 메소드 명 앞 super.을 붙여서

계승 발전 시키기. 즉, 부모클래스의 sum을 호출해 결과를 이용할 수 있음

super.sum(a,b); 부모클래스인 cal의 sum을 가르키게 됨

 

이렇게 자식 클래스에서 super를 이용하여 접근 권한이 부여된 부모 클래스의 변수와 메소드에 접근할 수 있음

이를 이용해서 오버라이딩하는 메소드에서 기존의 작업 앞 뒤로 손쉽게 추가적인 작업을 더 넣을 수 있게 됨.

 

super 와 this 의 활용 예

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class cal {
    public int sum(int a, int b) {
        return a+b;
    }
    //overloading
    public int sum(int a, int b, int c) {
        return this.sum(a, b)+c;//cal내부적으로 a+b에 해당하는 식 존재하기에 this사용
        //return a+b+c;
    }
}
class cal3 extends cal {
    public int minus(int a, int b) {
        return a-b;
    }
    public int sum(int a, int b) {//override 
        System.out.println("cal3!!!");
        return super.sum(a, b);//부모클래스의 sum을 호출하고 결과를 사용함
    }
    
}
cs