본문으로 바로가기

Overloading VS Overriding

category 나의 주니어 개발 일기/헷갈렸던 개념들 2020. 12. 21. 16:34
728x90
반응형
SMALL

1.오버로딩


중복으로 메소드를 선언하는것,

이름은 같은 메소드 이나 받고있는 (파라미터,타입)의 시그니처 값이 다름

[특징]

  • 메소드의 이름이 같아야함
  • 리턴형은 같아도되며 달라도된다.
  • 파라미터 개수가 달라야함, 같을 경우! 데이터 타입이 달라야함

 

오버로딩

public class Overloading{

   void print(){
       System.out.println("매개변수 없음")
   }
   
   
     void print(int a,int b){
       System.out.println("매개변수는" +a+ "와 " +b);
   }
   
   
     void print(double c){
       System.out.println("매개변수"  +c);
   }
}



public class OverloadingTest{

     public static void main(String[] args){
     
         Overloading ob=new Overloading();
         
         
         ob.print();
         
         ob.print(100,200);
         
         ob.print(12345.6);
     
     }
}
   

=====================================실행결과=================================

매개변수 없음

매개변수는 100와 200

매개변수 12345.6

똑같은 이름의 중복된 메서드를 여러개 선언하고 있는 Overloading 클래스를

OverloadingTest 클래스에서 그대로 매개변수값만 다르게 주어 사용하고 있는걸 확인할 수 있다.

 

 

 

2.오버라이딩("부모님의 등에 업혀있다/타고있다." 라고 생각하면 쉽다.)


부모클래스에서 선언되어있는 메소드를 자식클래스로 가져와 재정의 하여 사용

>>>> 이는 소프트웨어 재사용 측면에서 용이함

 

[특징]

  • 오버라이드 하고싶은 메소드는 항상 상위클래스에 존재해야함
  • 메소드의 이름이 똑같아야함
  • 메소드의 파라미터 개수, 자료형,타입등이 똑같아야함
  • 메소드의 리턴형 또한 똑같아야함
  • 상위 메소드와 동일하거나 또는 내용이 추가되어야함

 

오버라이딩


public class Mother{        //부모클래스

     public String name;
     public int age;
     
     public void print(){
     
          System.out.println("나의 이름은"+this.name+"이고, 나이는" +this.age+"입니다.");
       
     }
}



public class Son extends Mother{      //자식클래스

     String job;
     
     //부모클래스의 메소드를 가져온 [오버라이딩]
     public void print(){
       System.out.println("나의 이름은"+this.name+"이고, 나이는" +this.age+"입니다.");
       
       
       //새로운 내용의 추가
       System.out.println(this.name+"의 직업은 " +this.job+ "입니다.");
    
     }
}



public class Family{

     public static void main(String[] args){
     
         Son fm=new Son();
         
         fm.name="JYP"
         fm.age=25;
         fm.job="개발자";
         
         Son.print();
     }
}

=============================실행결과======================================

나의 이름은 JYP이고, 나이는 25입니다.

JYP의 직업은 개발자 입니다.

728x90
반응형
LIST