JAVA 오버로딩

강정우·2022년 7월 19일
0

JAVA

목록 보기
20/31
post-thumbnail

간략 복습

1.상속하면 개발하기 편하다 수정도 부모만 수정하면 되서 편하다
2.부모클래스를 자식에서 재정의 하는 것 == 오버라이딩
3.datatype을 묶어주는 up casting
그리고 오버 라이딩과 비슷한 오늘 배울 오버 로딩

1. overloading

  • 사전적 의미는 과적.
  • 오버로딩(중복정의) : 동일한 이름의 메소드를 정의하는 방법
  • 아래 2가지 조건중 하나만 만족하면 됨.
    1.매개변수의 개수가 다를 때
    2.매개변수의 데이터 타입이 다를 때
  • 유희사항 : 오버로딩 조건에는 리턴타입이 포함되지 않는다 (교재 209page)
  • 오버로딩 중복정의
    오버라이딩 재정의
public int plus(int num1, int num2) {
		return num1+num2;
	}
public int plus(int num1, int num2, int num3) {
		return num1+num2+num3;
	}
public int plus(double num1, double num2) {
		return (int)(num1+num2);
	}

2. 다형성

  • 오버로딩? 좋다! 하지만 위와 같이 같은 함수들을 2개, 3개... 단위로 만들고 또 type마다 method를 계속 만들면 사용자는 그때마다 바꿔줘야하기 때문에 불편해. 그래서 나온 것이 다형성!! 이것은 up-casting과 관련이 있다.

  • 우선 도형이라는 추상class를 만든다. 이 추상 class 안에는 getArea라는 도형의 면적을 구하는 추상 method가 들어있다.

  • 그리고 각각의 도형에는 각각의 도형에 맞는 각자의 면적을 구하는 getArea method가 정의되어있다.

  • Main 함수에는 각자의 도형의 객체를 생성하였다.

  • 이때 각각의 객체별로 method를 생성하면 매우 비 효율적이다.
    이를 막고자 하나의 객체를 생성하여 도형 class를 상속받은 sub class의 super class로 다시 up-casting하여 객체를 묶어 하나의 method를 정의한다면 다른 객체를 넣어도 편하게 자동 형변환을 통해 사용할 수 있다.

이거 대신
아래 한 줄이면 된다.

  • 추가로 method 안에 클래스의 객체를 넣어서 자유롭게 쓸 수 있다. main method와 해당 method 안에 값이 충돌이 있다면 더 가까운 값이 적용된다.

결론

  • method를 정의할 때 subclass method가 이난 super class의 method를 지정한 다면 코드의 수정과 관리가 편하다!!
  • 객체에 따라 subclass method가 적용된다.
  • 이것이 바로 다형성이다.
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글