티스토리 뷰
오버로딩이란?
- 자바에서 하나의 메서드 이름으로 여러 기능을 구현할 때 사용한다.
오버로딩의 조건
1. 메서드 이름이 같아야 한다.
2. 파라미터의 개수가 달라야 한다.
3. 파라미터의 개수가 같아도 타입이 달라야 한다
4. 파라미터의 개수가 같아도 순서가 달라야 한다.
코드
public class Book { //생성용 클래스
String title = "제목없음";
int series = 1;
int page = 100;
public Book() { //기능이 없는 생성자
}
public Book(String t) { //제목만 받는 생성자
title = t;
}
public Book(String t,int p) { //제목과 페이지 수를 받는 생성자
title = t;
page = p;
}
public Book(int s,String t) { //시리즈와 제목만 받는 생성자
series = s;
title = t;
}
public void bookInfo() { //책 정보 출력해주는 메서드
System.out.println(title + " " + series + " p." + page);
}
}
생성자 메서드가 4개가 있는 것을 확인할 수 있다.
public class BookMain { //실행용 클래스
public static void main(String[] args) {
Book b1 = new Book(); //기본 객체 생성
b1.bookInfo();
Book b2 = new Book("멘토시리즈 자바"); //제목만 입력
b2.bookInfo();
Book b3 = new Book("신데렐라",170); //제목과 페이지 입력
b3.bookInfo();
Book b4 = new Book(5,"노인과 바다"); //시리즈와 제목 입력
b4.bookInfo();
}
}
결과
제목없음 1 p.100
멘토시리즈 자바 1 p.100
신데렐라 1 p.170
노인과 바다 5 p.100
출력 결과는 이렇게 나온다.
이런 식으로 생성자뿐 아니라 메서드도 만들 수 있다.
메서드 오버로딩
public class Overload { //생성용 클래스
public void result() {
System.out.println("인자가 없는 메서드");
}
public void result(int n) {
System.out.println("정수를 인자로 받는 메서드");
}
public void result(char c) {
System.out.println("문자를 인자로 받는 메서드");
}
public void result(String s, int n) {
System.out.println("문자열과 정수를 인자로 받는 메서드");
}
public void result(int n, String s) {
System.out.println("정수와 문자열을 인자로 받는 메서드");
}
}
public class OverloadMain { //실행용 클래스
public static void main(String[] args) {
Overload ol = new Overload();
ol.result();
ol.result(10);
ol.result('ㅁ');
ol.result("asd",2);
ol.result(2,"as");
}
}
결과
인자가 없는 메서드
정수를 인자로 받는 메서드
문자를 인자로 받는 메서드
문자열과 정수를 인자로 받는 메서드
정수와 문자열을 인자로 받는 메서드
우리는 오버로딩으로 만들어진 것을 자주 쓰고 있었다.
좋은 예시로 println이 있을 거 같다.

위 사진의 println() 괄호 안을 잘 보면 매개변수로 어떤 자료형을 받는지 나와있다.
우리가 println메서드를 아무 생각 없이 출력해 주는 거구나!라고 생각하고 썼지만 이 메서드에는 자료형 별로 오버로딩을 하여 메서드를 만들어 놓은 것이다.
this란?
클래스 필드명과 생성자나 함수에 있는 파라미터 명이 같을 경우
생성자나 함수에 있는 파라미터가 클래스에 있는 필드보다 우선순위가 높다.
이런 경우 this.필드명 을 통해서 필드를 지정할 수 있다.
public class Student {
String name;
int age;
int student_id;
//this
//객체 자신 스스로 참조
public Student(String name, int age, int student_id) {
this.name = name; //필드에 있는 name에 파라미터에 있는 name을 대입한다는 코드
this.age = age;
this.student_id = student_id;
}
}
this()
this()는 현재 클래에 선언되어 있는 생성자를 가리킬 수 있는 키워드다.
public class Phone {
String brand;
int series;
String color = "검정색";
public Phone(String b, int s) {
brand = b;
series = s;
}
public Phone(String b, int s, String c) {
this(b,s); //위에 있는 String과 int 두 개의 파라미터를 받는 생성자를 불러온다.
color = c;
}
}
brand = b;
series = s;
두 줄의 코드를 this(b, s)로 줄여서 쓸 수 있는 장점이 있다.
'Java' 카테고리의 다른 글
| [JAVA] 생성자(Constructor) (0) | 2023.12.19 |
|---|---|
| [JAVA]setter&getter (0) | 2023.12.15 |
| [JAVA] 메서드(method) (0) | 2023.12.14 |
| [JAVA]클래스(Class) (0) | 2023.12.13 |
| [JAVA]배열2(Arrays) (0) | 2023.12.01 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 배열 내림차순
- 변수 생명주기
- 자바 클래스 설명
- 자바 배열 내림차순 정렬
- 생성자 쉽게 만들기
- 코딩
- 자바
- 생성자 호출 위치
- 게터세터 쉽게 만들기
- 자바 배열 생성
- 자바기초
- 자바 Arrays
- 자바 클래스 이해
- 자바 세터
- 자바 배열 초기화
- 생성자 위치
- 생성자를 써야하는 이유
- Java
- java기초
- 모바일프레임워크
- 자바 기초
- 생성자란
- 코린이
- java overloading
- getter setter 쉽게 만들기
- 자바 생명주기
- 자바 게터
- 자료형
- 자바 배열
- 자바 this()
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함