JAVA

java_다형성(메서드의 오버로딩과 매개변수의 다형성)_22.06.10(day14)

양빵빵 2022. 6. 10. 11:37

 

 

- 오버라이딩과 오버로딩 차이점에 대해 정확히 알고 있어야 한다.

 

 * 오버라이딩 : 부모의 메서드를 자식이 변형해서 사용 @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개 만들어야 하는데