ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 클래스 / 메소드 오버라이딩(method overriding)
    백엔드/자바 2020. 7. 28. 02:40

    오버라이딩(method overriding)이란?

    상속 관계에 있는 부모클래스에서 이미 정의된 메소드를 자식 클래스에서 다시 정의하는 것을 의미.

     

    자식 클래스는 모든 메소드를 상속받는데 이러한 메소드는 그대로 사용해도 되고

     

    오버라이딩을 통해 재정의하여 사용할 수도 있다.

    오버라이딩 방법

    ◎ 조상으로부터 상속받은 메서드의 매개변수 타입, 개수는 그대로 두고 즉 선언부는 그대로 두고

        그 실행부분을 수정하여 새로운 실행 코드를 적어 넣으면 된다.

     

    ◎ 선언부는 그대로 두고 내용만 바꿔서 메소드를 재정의하는 것을 오버라이딩이라 한다.

    오버라이딩 조건

    ◎ 오버라이딩은 메소드의 동작만 재정의하는 것이므로 선언부는 기존 메소드와 같아야 한다.

     

    ◎ 다만 메소드의 반환 타입은 부모 클래스의 반환 타입으로 타입 변환할 수 있는 타입이라면 변경 가능

     

    ◎ 부모 클래스의 메소드보다 접근 제어자를 좀 더 좁은 범위로 변경 불가

     

    ◎ 부모 클래스의 메소드보다 더 큰 범위의 예외 선언 불가

     

     

    인스턴스 메소드를 하나 가진 부모 클래스

     

    package Class_practice;
    
    public class Parent {  // 부모 클래스 선언
    	
    	void test_method() {  //  부모 클래스의 메소드
    		
    		System.out.println("부모 클래스입니다");
    		
    	}
    }

     

     

    부모클래스에서 상속받은 메소드를 재정의(오버라이딩)한 자식 클래스

     

    package Class_practice;
    
    public class Child extends Parent {  // 자식 클래스 선언
    	
    	void test_method() {  // 부모 클래스에 있던 메소드를 재정의(오버라이딩)
    		System.out.println("자식 클래스입니다");
    	}
    	
    }
    

     

     

    아래와 같이 메소드명이 같을 경우 자식 클래스는 부모 클래스에서 받은 메소드를 재정의해 사용 가능하다.

    package Class_practice;
    
    public class Test_main {
    
    	public static void main(String[] args) {
    		
    		Parent Test1 = new Parent();
    		Child Test2 = new Child();
    		
    		Test1.test_method();  // "부모 클래스입니다" 출력
    		Test2.test_method();  // "자식 클래스입니다" 출력
    
    	}
    }

     

    오버로딩? 오버라이딩?

      오버로딩 오버라이딩
    정의 기존에 없는 새로운 메소드를 정의하는 것 상속 받은 기존의 메소드를 재정의 하는 것
    반환값 반환값은 달라도 됨 반환값은 같아야 함
    매개변수 매개변수 타입, 개수가 달라야 함 매개변수 타입, 개수가 같아야 함

     

    '백엔드 > 자바' 카테고리의 다른 글

    초기화  (0) 2020.08.05
    생성자(Constructor)  (0) 2020.08.05
    클래스의 super와 super()  (1) 2020.07.28
    클래스의 상속(inheritance)  (0) 2020.07.28
    초기화  (0) 2020.07.27
Designed by Tistory.