반응형

어제 글에 올렸던 상속에 대해서 공부하고 오버라이딩에 대해 공부를 하였는데 오버로딩과 오버라이딩은 단어가 비슷하여 혼동하기 쉽지만, 완전히 다른 개념이고 그 개념과 차이점에 대해 아는 것이 중요한 것 같습니다. 

 

그래서 어제 글에 나온 오버라이딩과 오버로딩에 대한 설명이 부족하여 글을 쓰게 되었습니다.

 

상속에 대한 예시 글:

2020/07/02 - [IT/JAVA] - java-상속(extends)이란?/get 메서드란?/super,super() 이해/상속을 사용한 예시로 쉽게 이해하기

 

 

◆ 메서드 오버라이딩(Overriding)이란 메서드 재정의를 의미합니다.

즉, 상속 관계에 있는 부모 클래스에서 상속받은 메서드(부모 클래스에서 이미 정의된 메서드)를

수정해 자식 클래스에서 정의하는 것이라 할 수 있습니다.

 

 

 

▶ 오버라이딩의 조건

  • 오버라이딩이란 메서드의 동작만을 재정의하는 것이며 메서드의 선언부는 기존 메서드와 모두 동일해야합니다
  • (그러나 메서드의 반환 타입은 부모 클래스의 반환타입으로 타입 변환이 가능하다면 변경이 가능합니다.)
  • 부모 클래스의 메서드보다 접근 제어자를 더 좁은 범위로 변경 할 수 없습니다.
  • 부모 클래스의 메서드보다 더 큰 범위의 예외를 선언 할 수 없습니다.

 

 

▶ 오버라이딩의 장점

  • 소스코드의 재사용성이 향상될 수 있습니다.
  • 클래스에 따라 같은 이름의 다른 기능을 가진 메서드를 만들 수 있습니다.

 

 

▶ 오버라이딩을 사용한 예시

부모 클래스인 Price 클래스에 있는 메서드를 자식 클래스인 Product 클래스가 상속받게 됩니다.이때 물려받은 메서드를 동일하게 재정의 하면 메서드 오버라이딩이 된 것입니다. 아래의 예시를 통해서 이해해보시기 바랍니다.

 

◇ 오버라이딩 사용 전

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
package Overriding_Example;
 
//코드 1
 
class Price {
 
     void PrintPrice() {
        System.out.println("가격:1500원");
    }
}
 
class Product extends Price{
    void PrintPrice() {
        System.out.println("가격:5000원");
    }
}
 
public class Example {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    Product products= new Product();
    
    products.PrintPrice();
    }
 
}
 
cs

 

코드 1 실행 결과

코드 1 실행 결과

오버라이딩 후

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 Overriding_Example;
 
//코드 2
 
class Price {
 
    void PrintPrice() {
        System.out.println("가격:1500원");
    }
}
 
class Product extends Price {
    void PrintPrice(boolean p) {
        if (p) {
            System.out.println("가격:5000원");
        } else {
            super.PrintPrice();
        }
    }
}
 
public class Example {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Product products = new Product();
        boolean p=false;
        products.PrintPrice(p);
    }
 
}
 
cs

 

 

코드 2 실행 결과

코드 2 실행 결과

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기