Language/JAVA

[JAVA 기초 이론] 오버로딩 / 오버라이딩

오류나면꽥꽥 2023. 5. 22. 09:11
오버로딩 오버라이딩
기존에 없던 새로운 메서드를 정의 상속받은 메서드의 내용만 변경

 

  오버로딩 오버라이딩
매개변수 다름 동일
메서드 명 동일 동일
리턴값 다름 동일

 

 

 

 

 

 

✅ 오버로딩 OverLoading

 

  • 하나의 클래스같은 이름의 메소드를 여러 개 정의하여 구현 가능
  • 메서드에 사용되는 이름을 절약 가능

 

 

 

 

 

📌 오버로딩 조건

  1. 한 클래스 내에서 메서드 명이 동일
  2. 매개변수의 개수 / 타입이 달라야함
  3. 매개변수는 같고 리턴타입이 다른 경우 오버로딩이 성립 x

 

 

ex)

class OverLoading {
	void print(int a){
    	System.out.println(a);
    }
    
    void print(String s){
    	System.out.println(s);
    }
    
    void print(int a, int b){
    	System.out.println(a*b);
    }
    
    void print(String s, int a){
    	System.out.println(s+a);
    }
}


public class Test{
	public static void main(String[] args){
    	OverLoading ol = new OverLoading();
        ol.println(1);
        ol.println("a");
        ol.println(2,3);
        ol.println("b",4);
    }
}

 

출력)

더보기

1

a

6

b4

 

 

 

 

 

 

 

✅ 오버라이딩 Overriding

 

  • 상속 받은 부모클래스에서 이미 정의된 메서드를 자식클래스에서 재정의
  • @Override라는 어노테이션을 사용
  • 오버라이딩의 대표적인 예) Object 클래스의 toString() 메서드

 

 

 

 

 

 

📌 오버라이딩 조건

  1. 부모 클래스 메서드 명과 동일
  2. 매개변수의 타입, 개수, 순서 일치
  3. 리턴 타입 동일

 

 

ex)

class Person{
    void print(){
    	System.out.println("Person클래스의 print()메서드");
    }
}


class Student extends Person{
    @Override
    public void print(){
        System.out.println("Student클래스의 print()메서드");
    }
}


public class Test{
    public static void main(String[] args){
        Person p = new Person();
        Student st = new Student();

        p.print();
        st.print();
    }
}

 

출력)

더보기

Person클래스의 print()메서드

Student클래스의 print()메서드