일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터베이스
- 깃
- github
- Linux
- 쿠버네티스
- Kubernetes
- 정처기
- Python
- db
- DevOps
- 코딩테스트
- Lv 2
- Ai
- ubuntu
- 자바
- mysql
- 인공지능
- 파이썬
- 자료구조
- programmers
- 프로그래머스
- 우분투
- git
- 리눅스
- 코테
- docker
- Java
- 머신러닝
- LV 0
- 알고리즘
- Today
- Total
Myo-Kyeong Tech Blog
[ JAVA ] JAVA 객체 지향 프로그래밍 개념 정리 - 오버로딩(Overloading) 과 오버라이딩(Overriding) 본문
[ JAVA ] JAVA 객체 지향 프로그래밍 개념 정리 - 오버로딩(Overloading) 과 오버라이딩(Overriding)
myo-kyeong 2023. 6. 16. 16:50
오버로딩(Overloading)
- 같은 이름의 메서드를 여러 개 가지면서 매개변수의 유형과 개수가 각각 다른 것을 의미
- 매개변수에 따라 동일한 이름의 메서드가 다르게 작동하도록 하는 기능
예를 들어, '더하기' 함수를 만든다고 가정해보겠습니다. 이 함수는 두 개의 정수를 더하는 기능, 두 개의 실수를 더하는 기능, 또는 두 개의 문자열을 연결하는 기능 등을 수행할 수 있습니다. 함수의 이름은 같지만, 매개변수의 유형과 개수가 다르므로 이를 '오버로딩' 이라고 합니다.
또한, 자주 사용하는 'System.out.println' 메서드도 매개변수에 따라 서로 다른 동작을 하는 오버로딩의 전형적인 예입니다.
System.out.println(1); // 정수 출력
System.out.println(1.0); // 실수 출력
System.out.println("Hello"); // 문자열 출력
오버라이딩(Overriding)
- 상속 관계에 있는 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것
- 부모 클래스에서 정의한 메서드를 자식 클래스가 필요에 따라 수정해서 사용하도록 하는 기능
예를 들어, Student 클래스가 있다고 가정해 보겠습니다.
public class Student {
private String registrationNumber;
public Student(String regNum) {
this.registrationNumber = regNum;
}
// equals 메서드 오버라이딩
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Student))
return false;
Student otherStudent = (Student) obj;
return this.registrationNumber.equals(otherStudent.registrationNumber);
}
}
위의 코드에서 Student 클래스는 equals 메서드를 오버라이딩하였습니다. Object 클래스의 기본 equals 메서드는 두 객체가 동일한 객체인지(즉, 메모리 상에서 같은 위치에 있는지) 확인합니다. 그러나 Student 클래스에서는 equals 메서드를 재정의하여 두 학생이 같은 등록 번호를 가지고 있는지 확인하도록 했습니다.
이제 두 Student 객체의 equals 메서드를 호출하면, 그들이 같은 등록 번호를 가지고 있는지를 확인할 수 있습니다.
Student student1 = new Student("123");
Student student2 = new Student("123");
System.out.println(student1.equals(student2)); // true
이처럼, 자바에서는 equals, hashCode, toString 등의 메서드를 자주 오버라이딩하여 클래스에 맞는 동작을 정의합니다.
오버로딩과 오버라이딩은 모두 메서드의 이름을 재사용하는 기법이지만, 그 목적과 사용되는 상황은 크게 다릅니다. 오버로딩은 같은 이름의 메서드가 다양한 매개변수를 처리할 수 있게 해줌으로써 코드를 간결하게 하며, 오버라이딩은 상속받은 메서드의 기능을 필요에 따라 변경하거나 확장하게 해줍니다.
'Programming > Java' 카테고리의 다른 글
[ JAVA ] JAVA 익명 클래스(Anonymous Class) (0) | 2023.07.08 |
---|---|
[ JAVA ] FileInputStream 확장하여 DataInputStream 클래스 구현하기 ( java.io.DataInputStream ) (0) | 2023.06.29 |
[ JAVA ] JAVA IntStream 주요 메서드 정리 (0) | 2023.06.14 |
[ JAVA ] JAVA 클래스 변수와 인스턴스 변수 생성 시점과 메모리 영역 (0) | 2023.06.13 |
[ JAVA ] JAVA 문자열 메소드 정리 - substring, chatAt, length, contains, indexOf, equals (0) | 2023.06.12 |