Java

생활코딩 JAVA 상속 - Overriding vs Overloading / this & super

소댓 2023. 1. 9. 15:02

3. Overriding vs Overloading

- Overriding : 올라타서 덮어쓰다, 재정의하다.

- Overloading : 과적하다, 너무 많이 탑재하다.

 

- java는 같은 이름의 메소드를 여러 개 과적할 수 있음  > 형태만 다르다면!

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
32
33
34
35
36
37
38
39
class Cal{
    public int sum(int v1, int v2) {
        return v1+v2;
    }
    //Overloading
    public int sum(int v1, int v2, int v3) {
        return v1+v2+v3;
    }
}
class Cal3 extends Cal{
    public int minus(int v1, int v2) {
        return v1-v2;
    }
    //Overriding
    public int sum(int v1, int v2) {
        System.out.println("Cal3!!");
        return v1+v2;
    }
}
public class InheritanceApp {
    public static void main(String[] args) {
        Cal c = new Cal();
        System.out.println(c.sum(21));
        System.out.println(c.sum(211));
        
        Cal3 c3 = new Cal3();
        System.out.println(c3.sum(21));
        System.out.println(c3.minus(2,1));
        System.out.println(c3.sum(21));
    }
}
class Cal2{
    public int sum(int v1, int v2) {
        return v1+v2;
    }
    public int minus(int v1, int v2) {
        return v1-v2;
    }
}
cs

 

 

4. this & super

- this : 자기 자신

- 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
32
33
34
35
36
37
38
39
class Cal{
    public int sum(int v1, int v2) {
        return v1+v2;
    }
    //Overloading
    public int sum(int v1, int v2, int v3) {
        return this.sum(v1,v2)+v3;
    }
}
class Cal3 extends Cal{
    public int minus(int v1, int v2) {
        return v1-v2;
    }
    //Overriding
    public int sum(int v1, int v2) {
        System.out.println("Cal3!!");
        return super.sum(v1,v2);
    }
}
public class InheritanceApp {
    public static void main(String[] args) {
        Cal c = new Cal();
        System.out.println(c.sum(21));
        System.out.println(c.sum(211));
        
        Cal3 c3 = new Cal3();
        System.out.println(c3.sum(21));
        System.out.println(c3.minus(2,1));
        System.out.println(c3.sum(21));
    }
}
class Cal2{
    public int sum(int v1, int v2) {
        return v1+v2;
    }
    public int minus(int v1, int v2) {
        return v1-v2;
    }
}
cs