기록
[JAVA] 메서드 본문
<클래스 메서드와 인스턴스 메서드>
1. 클래스 메서드 (static method)
: 객체 생성없이 '클래스이름.메서드이름()'으로 호출한다.
인스턴스 변수나 인스턴스 메서드와 관련없는 작업을 하는 메서드다.
메서드 내에서 인스턴스변수를 사용할 수 없다.
→ 앞으로 메서드 내에서 인스턴스 변수를 사용하지 않는다면 static을 붙이는걸 생각해보자.
2. 인스턴스 메서드
: 인스턴스 생성 후, '참조변수.메서드이름()'으로 호출한다.
인스턴스 변수나 인스턴스 메서드와 관련된 작업을 하는 메서드
메서드 내에서 인스턴스 변수 사용 가능.
class MyMath2 {
long a, b;
long add() {
return a + b;
}
static long add(long a, long b) {
return a + b;
}
}
class MyMathTest2 {
public static void main(String[] args) {
MyMath2 mm = new MyMath2();
mm.a = 200L;
mm.b = 100L;
System.out.println(mm.add());
}
}
<클래스 메서드 사용시 주의사항>
- 같은 클래스의 멤버 끼리는 객체 생성이나 참조변수 없이 참조할 수 있으나 static 멤버들은 인스턴스 멤버들을 참조할 수 없음
class TestClass {
int iv;
static int cv;
void instanceMethod() {}
static void staticMethod() {}
void instanceMethod2() {
instanceMethod();
staticMethod();
}
static void staticMethod() {
System.out.println(iv); //Error!
System.out.println(cv);
}
static void staticMethod2() {
instanceMethod(); //Error!
staticMethod();
}
}
<메서드 오버로딩 (Method Overloading)>
- 메서드 오버로딩: 하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는 것
- 조건
1) 메서드의 이름이 같아야 한다.
2) 매개변수의 개수 또는 타입이 달라야 한다.
3) 리턴타입은 관계없다.
- System.out.println() 메서드의 오버로딩
void println()
void println(boolean x)
void println(char x)
void println(char[] x)
void println(double x)
void println(float x)
void println(int x)
void println(long x)
void println(Object x)
void println(String x)
- 메서드 오버로딩의 예
1) 매개변수의 타입이 다른 경우
2) 매개변수의 개수가 다른 경우
3) 리턴타입이 다른 경우
'공부 > JAVA' 카테고리의 다른 글
[JAVA] 변수 (0) | 2020.07.05 |
---|---|
[JAVA] 생성자 (0) | 2020.07.04 |
[JAVA] 클래스와 객체 (0) | 2020.07.04 |
[JAVA] 조건문과 반복문 (0) | 2020.07.04 |
[JAVA] 자바 개요 (0) | 2020.07.04 |
Comments