ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 메소드 오버라이딩(method overriding)
    프로그래밍/JAVA 2022. 8. 7. 12:56
    728x90

     

     

    메소드 오버라이딩은 부모클래스에 이미 정의된 메소드를 자식클래스에서 같은 메소드로 다시 재정의하는 것을 의미한다.

     

    메소드 오버라이딩을 하기위한 몇가지 조건이 있다.

    1. 메소드 오버라이딩하고자하는 부모클래스의 메소드와 재정의하고자하는 자식클래스의 메소드 명, 시그니처는 반드시 같아야한다.

    2. 부모 클래스의 메소드보다 접근 제어자를 더 좁은 볌위로 변경할 수 없다.

    3. 부모 클래스의 메소드보다 더 큰 범위의 예외를 선언할 수 없다.

     

    class Parent {
        void display() { 
        	System.out.println("부모 클래스의 display() 메소드입니다."); 
        }
    }
    
    class Child extends Parent {
        void display() { 
        	System.out.println("자식 클래스의 display() 메소드입니다."); 
        }
    }
    
    public class Inheritance {
        public static void main(String[] args) {
            Parent parent = new Parent();
            parent.display();
            Child child = new Child();
            child.display();
        }
    }
    
    /* 실행결과
    부모 클래스의 display() 메소드입니다.
    자식 클래스의 display() 메소드입니다.
    */

     

     

     

    오버로딩(overloading)과 오버라이딩(overriding)의 차이

    오버로딩은 같은 클래스 내 같은 메소드명과 다른 시그니처로 새로운 메소드를 생성하는 것이고 오버라이딩은 상속받은 기존 메소드를 메소드명과 시그니처를 동일하게하여 재정의하는 것이다.

     

    class Parent {
        void display() { 
        	System.out.println("부모 클래스의 display() 메소드입니다."); 
        }
    }
    
    class Child extends Parent {
        void display() { 
        	System.out.println("자식 클래스의 display() 메소드입니다.");
        }
        void display(String str) { 
        	System.out.println(str); 
        }
    
    }
    
    public class Inheritance {
        public static void main(String[] args) {
            Child child = new Child();
            child.display();
            child.display("오버로딩된 display() 메소드입니다.");
        }
    }
    
    /* 실행결과
    자식 클래스의 display() 메소드입니다.
    오버로딩된 display() 메소드입니다.
    */

     

    [참조] : http://tcpschool.com/java/java_inheritance_overriding

     

     

     

     

     

    728x90

    '프로그래밍 > JAVA' 카테고리의 다른 글

    [Java] Wrapper class  (0) 2022.08.08
    [Java] 다형성(polymorphism)  (0) 2022.08.07
    [Java] 상속(inheritance)  (0) 2022.08.07
    [Java] Object 클래스  (0) 2022.08.07
    [Java] 패키지(package), imPort문  (0) 2022.08.07

    댓글

Designed by Tistory.