Skip to content

Latest commit

Β 

History

History
116 lines (85 loc) Β· 3.1 KB

Overloading_and_Overriding.md

File metadata and controls

116 lines (85 loc) Β· 3.1 KB

μ˜€λ²„λ‘œλ”©κ³Ό μ˜€λ²„λΌμ΄λ”© (Overloading and Overriding)

written by sohyeon, hyemin πŸ’‘


μ˜€λ²„λ‘œλ”©(Overloading)

ν•œ 클래슀 내에 같은 μ΄λ¦„μ˜ λ©”μ„œλ“œλ₯Ό μ—¬λŸ¬κ°œ μ •μ˜ν•˜λŠ” 것

ν•œ 클래슀 내에 이미 μ‚¬μš©ν•˜λ €λŠ” 이름과 같은 이름을 가진 λ©”μ„œλ“œκ°€ μžˆλ”λΌλ„
λ§€κ°œλ³€μˆ˜μ˜ 개수 λ˜λŠ” νƒ€μž…μ΄ λ‹€λ₯΄λ©΄, 같은 이름을 μ‚¬μš©ν•΄μ„œ λ©”μ„œλ“œλ₯Ό μ •μ˜ν•  수 있음

μ˜€λ²„λ‘œλ”©λœ λ©”μ„œλ“œλ“€μ€ λ§€κ°œλ³€μˆ˜μ— μ˜ν•΄μ„œλ§Œ ꡬ별될 수 μžˆμœΌλ―€λ‘œ
λ°˜ν™˜ νƒ€μž…μ€ μ˜€λ²„λ‘œλ”©μ„ κ΅¬ν˜„ν•˜λŠ”λ° μ•„λ¬΄λŸ° 영ν–₯을 주지 μ•ŠμŒ

μ˜€λ²„λ‘œλ”©μ˜ 쑰건

1. λ©”μ„œλ“œ 이름이 κ°™μ•„μ•Ό ν•œλ‹€.
2. λ§€κ°œλ³€μˆ˜μ˜ 개수 λ˜λŠ” νƒ€μž…μ΄ 달라야 ν•œλ‹€.

ex) 예제

public class Overloadingtest {
    // test() 호좜
    void test(){
        System.out.println("λ§€κ°œλ³€μˆ˜ μ—†μŒ");
    }
    
    // test에 λ§€κ°œλ³€μˆ˜λ‘œ intν˜• 2개 호좜
    void test(int a, int b){
        System.out.println("λ§€κ°œλ³€μˆ˜ "+ a + "와 " + b);
    }
    
    // test에 λ§€κ°œλ³€μˆ˜ doubleν˜• 1개 호좜
    void test(double d){
        System.out.println("λ§€κ°œλ³€μˆ˜ " + d);
    }
}

public class test {
    public static void main(String[] args) {
        // Overloadingtest 객체 생성
        Overloadingtest ob = new Overloadingtest();
        
        // test() 호좜
        ob.test();
       
        // test(int a, int b) 호좜
        ob.test(10, 20);
       
        // test(double d) 호좜
        ob.test(50);
       
        // test(double d) 호좜
        ob.test(123.4);
    }
}

λ©”μ„œλ“œμ˜ 이름은 κ°™μ§€λ§Œ λ§€κ°œλ³€μˆ˜μ— 따라 각기 λ‹€λ₯Έ κ²°κ³Όλ₯Ό 좜λ ₯ν•˜κ²Œ λ©λ‹ˆλ‹€.


μ˜€λ²„λΌμ΄λ”©(Overriding)

쑰상 ν΄λž˜μŠ€λ‘œλΆ€ν„° 상속받은 λ©”μ„œλ“œμ˜ λ‚΄μš©μ„ λ³€κ²½ν•˜λŠ” 것

상속받은 λ©”μ„œλ“œλ₯Ό κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜κΈ°λ„ ν•˜μ§€λ§Œ μžμ† 클래슀 μžμ‹ μ— 맞게 λ³€κ²½ν•΄μ•Όν•˜λŠ” κ²½μš°μ— μ˜€λ²„λΌμ΄λ”©ν•œλ‹€.

μ˜€λ²„λΌμ΄λ”© 쑰건

μžμ† ν΄λž˜μŠ€μ—μ„œ μ˜€λ²„λΌμ΄λ”©ν•˜λŠ” λ©”μ„œλ“œλŠ” 쑰상 클래슀의 λ©”μ„œλ“œμ™€
1. 이름이 κ°™μ•„μ•Ό ν•œλ‹€.
2. λ§€κ°œλ³€μˆ˜κ°€ κ°™μ•„μ•Ό ν•œλ‹€.
3. λ°˜ν™˜νƒ€μž…μ΄ κ°™μ•„μ•Ό ν•œλ‹€.

단, 쑰상 클래슀의 λ©”μ„œλ“œλ₯Ό μžμ† ν΄λž˜μŠ€μ—μ„œ μ˜€λ²„λΌμ΄λ”©ν•  λ•Œ
1. μ ‘κ·Ό μ œμ–΄μžλŠ” 쑰상 클래슀의 λ©”μ„œλ“œλ³΄λ‹€ 쒁은 λ²”μœ„λ‘œ λ³€κ²½ ν•  수 μ—†λ‹€.
2. 쑰상 클래슀의 λ©”μ„œλ“œλ³΄λ‹€ λ§Žμ€ 수의 μ˜ˆμ™Έλ₯Ό μ„ μ–Έν•  수 μ—†λ‹€.
3. μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλ₯Ό staticλ©”μ„œλ“œλ‘œ λ˜λŠ” κ·Έ λ°˜λŒ€λ‘œ λ³€κ²½ν•  수 μ—†λ‹€.

ex) 예제

class Point {
    int x;
    int y;
    
    String getLocation() {
        return "x : " + x + ", y : " + y;
    }
}

class Point3D extends Point {
    int z;

    String getLocation() {
        return "x : " + x + ", y : " + y + ", z : " + z;
    }
}

μ˜€λ²„λ‘œλ”© vs μ˜€λ²„λΌμ΄λ”©

μ˜€λ²„λ‘œλ”©(overloading) : 기쑴에 μ—†λŠ” μƒˆλ‘œμš΄ λ©”μ„œλ“œλ₯Ό μ •μ˜ν•˜λŠ” 것(new)
μ˜€λ²„λΌμ΄λ”©(overriding) : 상속받은 λ©”μ„œλ“œμ˜ λ‚΄μš©μ„ λ³€κ²½ν•˜λŠ” 것(change, modify)

Question


Reference & Additional Resources