ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 오버라이딩(Overriding)과 오버로딩(Overloading) 차이점
    Java 2023. 10. 9. 15:34

    오버라이딩(Overriding)과 오버로딩(Overloading) 차이점에 대한 개요

    • 공통점은 클래스의 인스턴스 멤버인 메소드를 재정의 또는 확장의 개념
    • Overriding
      • 상위 클래스에 있는 메소드를 하위 클래스에서 재정의 하는 것
      • 부모 클래스의 상속을 받은 자식 클래스에서 확장
    • Overloading
      • 매개변수의 개수나 타입을 다르게 하여 같은 이름의 메소드를 여러 개 정의하는 것
      • 하나의 클래스 내부에서 확장

     

    오버라이딩(Overriding)

    • 자식 클래스에서 물려 받은 메소드를 재정의하거나 기능을 추가
    • 조건
      1. 메소드의 이름이 일치해야함
      2. 메소드의 매개변수의 개수, 순서, 데이터 타입이 일치해야함
      3. 메소드의 return타입이 일치해야함
    class Car {
        int speed = 0;
    
        public int setSpeed(int speed_change) {
            this.speed += speed_change;
            return this.speed;
        }
    }
    
    class Sonata extends Car {
        final int MAX_SPEED = 150;
    
        public int setSpeed(int speed) {
            this.speed += speed;
    
            if (this.speed > MAX_SPEED) {
                this.speed = MAX_SPEED;
            }
    
            return this.speed;
        }
    }
    
    public class CarOverridingTest {
        public static void main(String[] args) {
            Car car = new Car();
    		car.setSpeed(30);
    
            Sonata sonata = new Sonata();
    		sonata.setSpeed(180);
        }
    }

     
     

    오버로딩(Overloading) 

    • 같은 클래스 내부에서 메소드를 확장하기 위한 개념
    • 조건
      1. 메소드 이름이 일치해야함
      2. 메소드 매개변수의 개수 또는 타입이 달라야함
      3. return 타입이 달라야함
    class Car {
        int modelNum;
        String model;
    
        public int setModel(int modelNum) {
            this.modelNum = modelNum;
            return this.modelNum;
        }
    
        public String setModel(int modelNum, String brand) {
            this.model = brand + modelNum;
            return this.model;
        }
    }
    
    public class CarOverloadingTest {
        public static void main(String[] args) {
            Car car = new Car();
            car.setModel(7362);   // 7362
            car.setModel(2407, "sonata");   // sonata2407
        }
    }

     
     
     
    출처)
    https://velog.io/@god1hyuk/Javaclass-%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9overriding%EA%B3%BC-%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9overloading

Designed by Tistory.