728x90
반응형
메서드간의 호출 & 참조
static 메서드간의 호출은 가능하지만 static 메서드는 인스턴스 변수 호출 불가능
따라서 static 메서드는 인스턴스 메서드도 호출이 불가능하다.
이유: static 메서드는 그냥 사용이 가능한 메서드지만 인스턴스 변수는 객체를 생성해야 사용이 가능하고 인스턴스 메서드를 호출 시 객체가 존재하지 않을 수 있어 사용이 불가능
static 메서드의 사용은 인스턴스 변수&메서드가 없거나 공유해야할 메모리 정보가 있을 때 사용
오버로딩 (overloading)
정의: 매개변수는 다르지만 같은 기능을 수행;
오버로딩 성립 기준
- 반환 기준은 상관없음
- 메서드 이름이 같을 것
- 매개변수 개수나 타입이 다를 것
반환타입은 int, long이지만 상관이 없다. 매개변수의 타입이 각각 다르고 add라는 메서드이름이 같기 때문에 오버로딩 성립
아래의 메서드를 사용해서 (3, 3L)을 대입하면 자동으로 A로 오버로딩이 되고 (3L, 3)을 대입 시 B로 오버로딩이 된다
A: int add(int a, long b) {return a+b;}
B: long add(long a, int b) {return a+b;}
//1.반환타입 상관없고, 2.매개변수 개수 or 타입이 다름 3. 메서드 이름이 같다
오버로딩의 예시:
println("str")은 자동으로 String x 으로 오버로딩된다
println(String x)
println(char x)
println(int x)
println(float x)
println(long x)
오버로딩 예시
package CodingTestLv1;
public class OverLoad{
public static void main(String[] args) {
Test2 tt = new Test2();
System.out.println(tt.add(3, 4)); // 7
long[] a = {10L,30L};
System.out.println(tt.add(a)); // 40
}
}
class Test2{
int add(int a, int b) {
return a+b;
}
long add(long a, long b){
return a+b;
}
int add(int[] a) {
int result = 0;
for(int i = 0; i<a.length; i++) {
result += a[i];
}
return result;
}
long add(long[] a) {
int result = 0;
for(int i = 0; i<a.length; i++) {
result += a[i];
}
return result;
}
}
728x90
반응형
'Java > 자바의정석 기초편' 카테고리의 다른 글
자바의 정석 6장 (15일차) - 메서드 생성 예시문제2 (0) | 2022.01.31 |
---|---|
자바 학습 & 복습 14일차 - 메서드 생성 예시문제 (0) | 2022.01.28 |
자바 학습 & 복습 11일차 - 인스턴스 & static 매서드 (0) | 2022.01.26 |
자바 학습 & 복습 10일차 - return 문 & 기본형, 참조형 매개변수, 참조형 반환타입 (0) | 2022.01.24 |
자바 학습 & 복습 10일차 - 메서드 선언부 & 구현부 (0) | 2022.01.24 |