java_다형성(메서드의 오버로딩과 매개변수의 다형성)_22.06.10(day14)
- 오버라이딩과 오버로딩 차이점에 대해 정확히 알고 있어야 한다.
* 오버라이딩 : 부모의 메서드를 자식이 변형해서 사용 @Override
* 오버로드 : 하나의 클래스 내에서 같은 이름의 메서드를 여러개 선언 하는 것.
정사각형 구하는 메서드 01
직사각형 구하는 메서드 02 로 메서드 이름을 다르게 하였다.
실행
메서드 이름으로 정사각형 구하는 메서드를 찾을때 헷갈릴수 있다.
정사각형, 직사각형 구하는 메서드 이름은 모두 동일하게 만들고 입력받는 매개변수에 차이를 두면 좀 더 쉬울 듯?
정사각형은 매개변수 int 타입 1개의 데이터만 입력 받고
직사각형은 매개변수 int 타입 2개의 데이터만 입력을 받는다.
현재 메서드는
calcArea(int)
calcArea(int,int) 가 존재하여
calcArea(int abc) 메서드는 만들수 없다.
타입, 개수, 순서가 다르지 않으면 생성이 불가능 하다는 조건에 걸린다.
System.out.println도 오버로딩 방식으로 사용하는 메서드 이다.
====== 실습예제 =====
드라이버 클래스를 만들고
driveMustang 메서드를 만들었다.
Driver 타입의 kim은 Driver의 인스턴스 이다.
Driver의 인스턴스 kim이 그랜져를 운전하려고 하려고 하면 메서드를 또 만들어야 한다. (기존에 알고 있던 방식)
driveMustang 메서드와 driveGreanduer 메서드는 공통된 부분이 있으므로
매개변수로의 타입을 변경하여 drive(매개변수 = 그랜져 or 머스탱) 으로 사용할수 있다.
매개변수가 되는 타입인 자동차의 종류가 100가지 이상이라면... 메서드를 100개 만들어야 하는데