Overloading & Overriding

둥냥둥냥둥·2023년 7월 24일
0
post-thumbnail

Overloading

오버로딩(Overloading) 같은 이름의 메소드를 여러 개 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술

오버로딩은 이름이 같아도 매개변수 개수, 타입, 순서를 다르게 해서 같은 이름으로도 여러 개의 함수를 정의할 수 있는 것을 말한다. 이는 프로그램의 유연성을 높이고 결과 적으로 코드를 깔끔하게 하는 효과가 있으며, 같은 클래스 내에서 사용한다.

Overloadingtest.java

public class Overloadingtest {

      // 기본 test()
      void test(){
          System.out.println("매개변수 없음");
      }

      // 2개의 int type 매개변수를 출력하는 test()
      void test(int a, int b){
          System.out.println("매개변수 "+ a + "와 " + b);
      }

      // 1개의 double type 매개변수를 출력하는 test()
      void test(double d){
          System.out.println("매개변수 " + d);
      }
  }

test.java

public class test {

      public static void main(String[] args) {

          // Overloadingtest 객체 생성
          Overloadingtest ob = new Overloadingtest();

          // test() 호출
          ob.test();

          // test(int a, int b) 호출
          ob.test(10, 20);

          // test(double d) 호출
          ob.test(50);

          // test(double d) 호출
          ob.test(123.4);
      }
  }

결과

  매개변수 없음
  매개변수 1020
  매개변수 50.0
  매개변수 123.4
  • 예제와 같이, test 라는 같은 이름의 메소드를 여러개 정의하고 매개변수만 변경하여 선언했을 때, 호출 매개변수에 따라 각각의 함수에 매칭되어 실행된다.

Overriding

오버라이딩(Overriding) 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의 해서 사용하는 기술

상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의를 하는 것을 말한다. 상속 관계 클래스에서 사용되며 static, final로 선언한 메서드는 오버라이딩이 불가능하다.

특징

  • 상위 클래스가 가지고 있는 멤버변수가 하위 클래스로 상속되는 것처럼
  • 상위 클래스가 가지고 있는 메소드도 하위 클래스로 상속되어 하위 클래스에서 사용할 수 있다.
  • 하지만, 하위 클래스에서 상위 클래스의 메소드를 재정의해 사용할 수 있다.
  • 상속 관계에 있는 클래스 간에, 같은 이름의 메소드를 재정의하는 기술을 Overriding 이라고 한다.

Animal.java

interface Animal{
	 public void eat()
}

Person.java

// Animal 상속
public class Person implements Animal{
		@Override
         public void eat(){
          	 System.out.println("사람처럼 먹습니다.");
         }
     }

test.java

public class MyClass {

   public static void main(String[] args) {
   		 Person a = new Person();
         a.eat();
   }
}

실행결과

사람처럼 먹습니다

Overloading과 Overriding 성립조건

구분OverloadingOverriding
메소드 이름동일다름
매개변수, 타입다른동일
리턴 타입상관없음동일
profile
Java 먹자

0개의 댓글