메소드의 이름을 재사용
하여 다른 기능을 해주는 메소드이다.
public class Overloading {
String name;
int score;
// 생성자
Overloading() {
}
// 생성자 overloading(메소드 재정의)
Overloading(String name) { // 매개변수 1 개
this.name = name;
}
// 생성자 오버로딩
Overloading(int score) { // 매개변수 1개
}
// 생성자 오버로딩
Overloading(String name, int score) { // 매개변수 2개
}
// 매개변수의 갯수 또는 매개변수의 자료형(타입)이 다르면 이름이 같아도 오버로딩 OK
// 메소드 오버로딩
public void print() {
System.out.println("프린트 기본 메소드");
}
public void print(String name) {
System.out.println("프린트 이름 : " + name);
//100줄이라면
}
public void print(int score) {
System.out.println("프린트 점수 : " + score);
//100줄이라면
}
public void print(String name, int score) {
// 메소드 재사용
this.print(name);
this.print(score);
}
}
this는 생성자 안에 사용했을 때 매개변수와 헷갈리지 않으려고 즉, 이것이 객체변수라는 것을 나타내기 위한 것이다.
클래스 선언시 내부적으로 선언되어 생성된다.
클래스는 선언시 한번의 메소드를 선언하는데 그 메소드는 여러 객체의 공통적인 행동을 정의하고 있다.
즉, 한번의 선언으로 여러 객체를 다루어야 한다. 그렇기 때문에 메소드 내에서 필드를 사용하고자 할 때 어떤 객체의 필드인지를 구분할 수 없다. 따라서 객체를 생성하거나 혹은 객체 .
을 찍고 필드에 접근하는 순간 그 객체를 this라는 변수가 받는다. 결과적으로 클래스 선언시 this.필드명으로 접근하면
여러 객체도 하나의 메소드에서 다룰 수 있게 된다.