티스토리 뷰
1. 메서드 Overloading
메서드 Overloading
변수의 중복 선언
- 변수와 달리 하나의 클래스에 동일한 이름의 메서드는 여러 개 정의할 수 있음
- 데이터 타입이 달라도 변수 이름이 동일한 경우를 허용하지 않음
메서드의 중복 정의 (Overloading)
-
매개변수의 개수와 타입을 통해 실행될 메서드를 구분할 수 있기 때문에, 하나의 클래스에 동일한 이름의 메서드를 여러 개 정의할 수 있다.
-
메서드 오버로딩은 객체 지향 같은 객체지향 언어에서만 제공되는 문법이다.
PrintStream 클래스의 메서드 Overloading
메서드 Overloading 유형
- 매개변수의 개수와 타입이 모두 다른 경우 => O
- 리턴 타입이 다른 경우 => X, 오버로딩 시 리턴 타입은 무시되어 에러 발생
- 매개 변수의 이름이 다른 경우 => X, 매개변수의 이름은 외부로부터 값을 받아오기 위함에 불과함
- 매개변수의 개수와 타입이 같지만 순서가 다른 경우 => O
- 매개변수가 형변환된 다른 타입인 경우
- int는 double로 묵시적 형변환이 가능하다.
생성자 Overloading
- 생성자는 클래스로부터 객체를 생성할 때 객체의 변수들을 초기화하는 역할을 담당하는 메서드.
- 생성자 또한 메서드 Overloading이 지원된다.
- 하나의 클래스는 매개변수의 유형과 개수를 달리해서 여러 개의 생성자를 갖도록 한다.
- 필요한 데이터로만 초기화된 객체들을 사용 가능하다.
class Employee {
String name;
int age;
int salary;
// 기본 생성자
public Employee() {
}
// 생성자 Overloading
public Employee(String name, int age) {
this.name = name;
this.age = age;
}
public Employee(String name, int age, int salary) {
this.name = name;
this.age = age; // 중복되는 코드가 있음
this.salary = salary;
}
}
class EmployeeTest {
public static void main(String[] args) {
Employee kim = new Employee();
System.out.println(kim.name + "의 나이 : " + kim.age + ", 의 급여 : " + kim.salary);
Employee lee = new Employee("이선영", 45);
System.out.println(lee.name + "의 나이 : " + lee.age + ", 의 급여 : " + lee.salary);
Employee park = new Employee("박재성", 28, 220);
System.out.println(park.name + "의 나이 : " + park.age + ", 의 급여 : " + park.salary);
}
}
// null의 나이 : 0, 의 급여 : 0
// 이선영의 나이 : 45, 의 급여 : 0
// 박재성의 나이 : 28, 의 급여 : 220
this()
의 의미와 사용법
this
예약어- 생성자나 메서드의 매개변수 이름이 객체 변수의 이름과 같은 경우, this.객체변수이름 으로 구별
this()
생성자- 같은 클래스 내의 Overloading 된 다른 생성자 메서드를 호출할 때 사용함
public class Employee {
int employeeNo;
String name;
int age;
int salary;
public Employee() {
this(0, "Annonymity", 0, 0);
}
public Employee(int employeeNo, String name) {
this.employeeNo = employeeNo;
this.name = name;
}
public Employee(int employeeNo, String name, int age) {
this(employeeNo, name);
this.age = age;
}
public Employee(int employeeNo, String name, int age, int salary) {
this(employeeNo, name, age);
this.salary = salary;
}
}
출처 - swexpertacademy.com/
'Java > Java Basic' 카테고리의 다른 글
[Java] 2-05 - 자바의 상속, super, final (0) | 2021.01.10 |
---|---|
[Java] 2-04 - 매개변수 - 값 복사, 주소 복사, Call by value, Call by reference (0) | 2021.01.09 |
[Java] 2-03 - 생성자와 this (0) | 2021.01.09 |
[Java] 2-03 - 자바 Modifier : static, final, abstract, 인스턴스 변수, 클래스 변수, 상수, 추상 메소드와 추상 클래스 (0) | 2021.01.09 |
[Java] 2-02 - 클래스의 구조 - 접근제한자와 정보은닉, 메서드 자동 생성, Getter(), Setter(), toString() (0) | 2021.01.09 |
댓글