본문 바로가기
JAVA

[OOP] 오버로딩과 오버라이딩 차이

by HANdeveloper 2022. 7. 26.

▶ 다형성

 : 사용법은 동일하지만 다양한 객체를 이용해 다양한 실행결과가 나오도록 하는 것

       

☆☆오버로딩(다중정의)☆☆

  - 자바 다형성 구현기법 중의하나
  - 정의: 같은메소드 이름으로 여러 개의 메소드를 정의하는 방법
           - 규칙: 
               * 메소드의 이름(식별자)이 같아야한다.
               * 메소드의 매개변수의 숫자가 다르거나, 타입이 달라야한다.
               * 메소드의 매개변수 숫자, 타입 조합이 달라야한다.
               * 메소드의 리턴타입, 접근지정자는 상관없다.

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
public class Overloading {

//메소드 이름은 같으나 매개변수는 다름
    public void method() {
        System.out.println("public void method()");
    }
    public void method(int a) {
        System.out.println("public void method(int a)");
    }
    public void method(String msg) {
        System.out.println("public void method(String msg)");
    }
    public void method(int a, int b) {
        System.out.println("public void method(int a, int b)");
    }
    public void method(String a, String b) {
        System.out.println("public void method(String a, String b)");
    }
    public void method(int a, String b) {
        System.out.println("public void method(int a,String b)");
    }
    public void method(int a, int b, int c) {
        System.out.println("public void method(int a, int b, int c)");
    }
    public void method(String a, int b, int c) {
        System.out.println("public void method(String a, int b, int c)");
    }
cs

☆☆오버라이딩(재정의)☆☆

 - 상속관계에서 발생하는 메소드의 재정의 기법
 - 자바의 다형성 기법중의 하나
 - 정의 : 부모클래스에 정의된 메소드와 동일한 메소드_이름,리턴타입,매개변수)를
              자식클래스에 정의(재정의)하는것

 

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
40
41
42
43
class OverridingParent{
    public void method1() {
 
        System.out.println("OverridingParent.method1()");
    }
    public void method2() {
 
        System.out.println("OverridingParent.method2()");
    }
}
class OverridingChild extends OverridingParent{
    
    public void method2() { //자식이 재정의한 자식의 것
        System.out.println("-------재정의된 method2 start----------");
        /*
         * super
         *   - this와 같은 self 참조변수
         *   - this와 같은 주소를 가리킨다.
         *   - 재정의에 의해서 은폐된 메소드를 호출할때 사용
         */
        super.method2(); //super는 부모메소드 호출
        
        System.out.println("OverridingChild.method2()추가작업");
        System.out.println("-------재정의된 method2 end------------");
        
      // 재정의하면 자식에서 재정의된 메소드만 호출
    
    }
 
public class OverridingParentChildMain {
 
    public static void main(String[] args) {
        OverridingChild oc = new OverridingChild();
        oc.method1();
        oc.method2(); //oc.method2()호출시에는 재정의된 메소드만 호출
        oc.method3();
        
                
    }
 
}
cs

 

'JAVA' 카테고리의 다른 글

[JSP] MODEL 1 & MODEL 2(MVC) 차이  (0) 2022.08.09
[JAVA] 정적 제한자 static  (0) 2022.07.26
[OOP] 캡슐화 Encapsulation  (0) 2022.07.26
[OOP] 객체와 클래스 (클래스구성요소)  (0) 2022.07.26
[OOP] 객체지향 프로그래밍  (0) 2022.07.26

댓글