반응형
1. 오버로딩(Overloading) : 같은 클래스 내에서 이름은 같지만 매개변수의 갯수나 타입이 다른 메소드를 정의하는 것.
특징 :
1. 메소드의 이름이 같아야함
2. 오버로딩하는 메서드와의 차이점이 있어야함(매개변수의 개수, 데이터 타입)
3. 차이점에 리턴형은 포함되지 않음

이런식으로 사각형의 크기를 구하는 메서드를 정사각형일 경우에는 width하나만, 직사각형일 경우에는 width, height 두가지를 이용해서 오버로딩할 수 있다.

2. 오버라이딩(Overriding)
오버라이딩은 상위클래스의 메서드를 하위클래스에서 재정의하는 것.
특징 :
1. 상위클래스에 같은 이름의 메서드가 존재해야 함
2. 상위클래스의 매개변수와 반환형이 같아야 함
3. 객체지향 언어의 특징인 다형성 중 하나
4. 새로운 예외를 throws 할 수 없다.


위와같이 부모클래스에서는 파이 값을 3.14159로 계산하지만 자식클래스에서 더 정확한 계산을 위해 Math.PI 상수를 사용했다.
@Override는 생략해도 괜찮지만 붙여주면 areaCircle()이 정확히 오버라이딩 된 것인지 컴파일러가 체크하기 때문에 실수를 줄여준다.

자식클래스에서 부모 클래스의 메소드를 오버라이딩하게 되면 부모 클래스의 메소드는 숨겨지고 자식메소드만 사용하게된다.
이때 부모 클래스의 메소드를 호출해야하는 상황이 발생하면 super키워드를 붙여 부모 메서드를 호출 할 수 있다.


부모 메소드의 fly()는 일반비행이지만 자식메서드에서는 초음속비행과 부모메서드의 일반비행 두가지로 동작하도록 설계했다.

반응형
'STUDY > JAVA' 카테고리의 다른 글
string 배열 비교(참조타입 배열 비교) (0) | 2022.10.27 |
---|---|
List와 Array(배열)의 차이점 + ArrayList (0) | 2022.10.27 |
JAVA - Stream(스트림) (0) | 2022.05.16 |
JAVA - @Override(메소드 재정의) (0) | 2022.05.11 |
JAVA - 상속(Inheritance) (0) | 2022.05.11 |