일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- js
- oracle
- sqlplus
- CLASS
- MySQL
- JavaScript
- CSS
- 그룹별 유효성 검사
- C
- 프로젝트
- C언어
- 프로그래머스
- Thymeleaf
- db
- 타임리프 리로드
- Tomcat
- devtools
- 크롬 디버깅
- 톰캣
- 코딩테스트연습
- chrome mobile debug
- Swing
- HTML
- Valid groups
- GUI
- spring
- java
- 유효성 그룹
- node.js
- vue-cookies
개발 기록
overloading [java] 본문
오버로딩이란 무엇인가?
오버로딩이란 같은 클래스 내에서 메서드 이름의 중복을 허용하는 것!
정확하게 말하면 매개변수의 갯수나 매개변수의 자료형을 다르게 선언한다면 메서드 이름의 중복을 허용한다.
예를 들어 내가 getInfo( )라는 이름의 메서드를 만들어서 사용했다고 치자.
하루는 성적을 매개변수로 넣어서 성적만 가져오고 싶고, 다른 날에는 이름을 매개변수로 넣어 이름만 가져오고 싶다.
또 그 다음 날에는 매개변수에 성적과 이름을 넣어서 둘 다 가져오고 싶다면..!! 이때 만약 오버로딩이 없었다면
나는 각 기능마다 서로 다른 이름의 메서드를 만들어야 됐을 것이다.
ex)getInfo_score( ), getInfo_name( ), getInfo_scoreName( ) 등...
정말 생각만 해도 귀찮고 짜증나는 일이다.
이런 상황을 위해서 감사하게도 메서드 이름의 중복을 허용하는, 오버로딩이 있다.
사용하는 방법은 아주 간단한데, 같은 이름의 메서드를 정의하되, 매개변수와 자료형을 각각 다르게 해준다!
//성적만 출력하고 싶을 때는
public void getInfo(int score){
System.out.println("입력하신 성적은 "+score);
}
//이름만 출력하고 싶을 때는
public void getInfo(String name){
System.out.println("입력하신 이름은 "+name);
}
//이름과 성적을 동시에 출력하고 싶다면
public void getInfo(String name, int score){
System.out.println(name+" 의 성적은 : "+score);
}
//아무 정보도 입력하기 싫을 때
public void getInfo( ){
System.out.println("가져올 정보가 없네염");
}
다음과 같이 각각의 기능은 다르지만, 메서드의 이름은 동일하게 사용할 수 있다.!!
이제 내가 getInfo( )메서드에 어떤 매개변수를 넣냐에 따라 출력되는 결과가 달라진다.
신기한 점은 생성자도 메서드이기 때문에 오버로딩이 가능하다.
//그냥 학생 객체를 만들 때
public Student( ){
System.out.println("학생 한 명의 객체를 생성");
}
//학생 객체를 만들면서 이름을 부여하고자 할 때
public Student(String name){
System.out.println(name+"학생의 객체를 생성");
}
//이름과 번호를 부여할 때
public Student(String name, int num){
System.out.println(num+"번 "name+"학생의 객체를 생성");
}
이런식으로 오버로딩을 이용하여 생성자 메서드도 정의할 수 있다.
실행결과
'Java > javaSE' 카테고리의 다른 글
자바 GUI 띄우기[JFrame] (0) | 2021.05.12 |
---|---|
overriding[java] (0) | 2021.05.03 |
자바의 접근제한자, getter/setter (0) | 2021.04.29 |
path설정하기[환경변수] (0) | 2021.04.27 |
자바의 자료형 (0) | 2021.04.26 |