반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 식물키우기
- 어피티 7월 북클럽
- 정보처리기사 합격
- 정처기 실기
- 삼색달개비
- 정보처리기사 공부
- 오프라인 소모임
- 어피티 독자
- 시나공
- AOP
- 수경재배
- 정처기 공부
- 아보카도
- 아보카도 키우기
- 정처기
- Spring
- 싱고니움
- 아보카도키우기
- 스프링
- 식물 키우기
- 정보처리기사 실기
- 식물
- 스프링AOP
- 달개비
- 정보처리기사
- springAOP
- js
- 개발 공부
- 북클럼
- 자바
Archives
- Today
- Total
deblog
오버라이딩과 오버로딩의 차이 본문
반응형
오버라이딩(Overriding)
오버라이딩이란 상위클래스의 선언된 메서드를 하위 클래스에 기능에 따라서 메서드를 재정의하여 사용 하는 것이라고 할 수 있습니다.
자바에서 자식 클래스는 부모 클래스의 private 멤버를 제외한 모든 메서드를 상속받습니다.
이렇게 상속받은 메서드는 그대로 사용해도 되고, 필요한 동작을 위해 재정의하여 사용할 수도 있습니다.
오버라이딩의 조건
- 오버라이딩이란 메서드의 동작만을 재정의 하는 것이므로, 메서드의 선언부의 기존 메서드와 완전히 같아야 합니다. 하지만 메서드의 반환 타입은 상위클래스의 반환 타입으로 타입 변환할 수 있는 타입이라면 변경할 수 있습니다.
- 상위 클래스의 메서드보다 접근제어자를 더 좁은 범위로 변경 할 수 없습니다.
- 상위 클래스의 메서드보다 더 큰 범위의 예외를 선언할 수 없습니다.
오버라이딩 예시
abstract class Duck{
String kind="오리";
abstract void fly();
// body가 없는 메서드는 하나라도 있으면
// class에서는 반드시 클래스명 앞에 abstract를 붙여야 한다.
//
//실제메서드
void swim() {
System.out.println(kind+"가 수영을 한다!!");
}
}
class NormalDuck extends Duck{
// 상위에 있는 추상메서드는 하위에서 반드시 선언하여야 한다.
@Override
void fly() {
System.out.println("보통 오리는 날지 못한다");
}
}
// 상위 인터페이스, 하위 실제 클래스
interface Flyway{
void fly();
default void method2() {
System.out.println("default 실제 메서드");
}
}
// 인터페이스 implements로 상속 받는다
class Wing01 implements Flyway{
@Override
public void fly() {
System.out.println("날개1호로 하늘을 날다!");
}
}
오버로딩(Overloading)
메서드 오버로딩이란 같은 이름의 메서드를 중복하여 정의하는 것을 말합니다.
자바에서는 원래 한 클래스의 같은 이름의 메서드를 둘 이상 가질 수 없습니다.
하지만 매개변수의 개수나 타입을 다르게 하면, 하나의 이름으로 메서드를 작성할 수 있습니다.
즉, 메서드 오버로딩은 서로 다른 시그니처를 갖는 여러 메서드를 같은 이름으로 정의하는 것이라고 할 수 있습니다,
이러한 메서드 오버로딩을 사용함으로써 메서드에 사용되는 이름을 절약할 수 있습니다.
또한, 메서드를 호출할 때 전달해야 할 매개변수의 타입이나 개수에 대해 크게 신경을 쓰지 않고 호출할 수 있게 됩니다.
메서드 오버로딩은 객체 지향 프로그래밍의 특징 중 하나인 다형성(polymorphism)을 구현하는 방법 중 하나입니다.
'IT > JAVA' 카테고리의 다른 글
[JAVA] Collection (1) (0) | 2021.08.27 |
---|---|
heap과 stack의 차이점은? (0) | 2021.04.28 |
AOP(Aspect Oriented Programming) 실습(3) (0) | 2021.04.17 |
AOP(Aspect Oriented Programming) 구현(2) (0) | 2021.04.17 |
AOP(Aspect Oriented Programming)란?(1) (0) | 2021.04.17 |
Comments