[Java] 메서드 오버로딩

zizi·2023년 5월 2일
0

Java

목록 보기
14/27

매개변수의 유형과 개수가 다르게 하여 같은 이름의 메소드를 여러 개 가질 수 있게하는 기술

    class MyClass2{
        public int plus(int x, int y){
            return x+y;
        }

        public int plus(int x, int y, int z){
            return x + y + z;
        }

        public String plus(String x, String y){
            return x + y;
        }
    }
  • 메소드 오버로딩은 매개변수 부분이 달라야 한다.
    public int plus(int i, int f){	//오류
        return i+f;
        //변수명은 다르지만, 매개변수의 타입과 개수가 동일한 메소드를 또 정의 할 수는 없다.
    }

메서드 오버로딩 예시

    public MethodOverloadExam{
        public static void main(String args[]){
            MyClass2 m = new MyClass2();
            System.out.println(m.plus(5,10));
            System.out.println(m.plus(5,10,15));
            System.out.println(m.plus("hello" + " world"));
        }
    }

오버라이딩

  • 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것을 오버라이딩이라고 한다.

생성자 오버로딩과 this

생성자의 매개변수의 유형과 개수가 다르게 하여 같은 이름의 생성자를 여러 개 가질 수 있다.

- 생성자도 메소드와 마찬가지로 여러개를 선언할 수 있다.
  • 매개변수의 수와 타입이 다르다면 여러개의 생성자를 선언할 수 있다.
    public class Car{
        String name;
        int number;

        public Car(){	// 기본 생성자

        }

        public Car(String name){
            this.name = name;
        }

        public Car(String name, int number){
            this.name = name;
            this.number = number;
        }
    }

오버로딩된 생성자 이용하기

    public class CarExam4{
        public static void main(String args[]){
            Car c1 = new Car();
            Car c2 = new Car("소방차");
            Car c3 = new Car("구급차", 1234);
        }
    }

자기 생성자 호출하는 this()

  • 기본생성자를 호출하였을 때 name을 "이름없음" , 숫자를 0으로 초기화 하기
    public Car(){
        this.name = "이름없음";
        this.number = 0;
    }
  • 위처럼 작성했을 경우 코드의 중복이 일어난다.
  • 자신이 가지고 있는 다른 생성자를 이용할 수 있다.
    public Car(){
        this("이름없음", 0);
    }
  • this괄호 열고로 시작하면 자신의 생성자를 호출하는 것이다.
  • 자기 자신의 생성자를 호출함으로써 비슷한 코드가 중복되서 나오는 것을 방지할 수 있다.
profile
좋았다면 추억이고 나빴다면 경험이다.🍀

0개의 댓글

관련 채용 정보