method : 기능 (명령문들의 집합)
- 클래스 안에 있어야 합니다.
- Java에서는 메소드 안에 메소드 생성할 수 없습니다.
접근제한자 메모리영역 리턴타입 메소드이름 (파라미터) {
명령문;
}
접근제한자 : 접근을 제한해주는 것
- public (+) : 어디서나 접근, 참조 가능
- protected (#)
- 상속일 경우 : 상속된 곳에서만
- 상속이 아닐 경우 : 같은 패키지 내에서만
- default (~) : 같은 패키지 내에서만
- private (-) : 같은 클래스 내에서만
메모리영역
- static인 경우 : application이 실행되면 모두 메모리에 할당되고, 종료되면 삭제됩니다.
- 객체를 생성하지 않습니다.
- class.method() 형태로 호출합니다.
- non-static인 경우 : 클래스의 인스턴스를 생성할 때 만들어집니다.
- class 변수 = new class();
- 변수.method() 형태로 호출합니다.
리턴타입 : 메소드를 실행했을 때 리턴된 값의 타입
- void : 리턴 값이 없는 것
- int, double, String, boolean ...
파라미터 (=매개변수)
- method 외부에서 전달된 값을 받아서, 내부에서 사용하기 위한 변수
static int getSum(int i, int j) { // 파라미터 i, j
int sum = i + j;
return sum;
}
아규먼트
- method 외부에서 전달해주는 값
getSum(10, 20); // 파라미터 값으로 아규먼트 10과 20을 대입하였다.
코드로 이해하기
프로젝트 구조
com.test01 패키지의 MethodTest01 클래스
package com.test01;
public class MethodTest01 {
public static void main(String[] args) {
// class.method() 형태로 호출합니다.
MethodTest01.publicMethod();
MethodTest01.protectedMethod();
defaultMethod(); // 같은 class안이면 class 이름 생략 가능합니다.
privateMethod();
}
// 접근제한자
// public : 어디서나 접근, 참조 가능 (기호 : +)
public static void publicMethod() {
System.out.print("접근제한자 1. ");
System.out.println("public");
}
// protected (#)
// 1. 상속일 경우 : 상속된 곳에서
// 2. 상속이 아닐 경우 : 같은 패키지 내에서만
protected static void protectedMethod() {
System.out.println("접근제한자 2. protected");
}
// (default) (~) : 같은 패키지 내에서만
static void defaultMethod() {
String str = "default";
System.out.printf("접근제한자 3. %s \n", str);
}
// private (-) : 현재 클래스 내에서만
private static void privateMethod() {
System.out.println("접근제한자 4. private");
}
public void nonStaticMethod() {
System.out.println("non static method!");
}
}
출력 결과
com.test01 패키지의 MethodTest02 클래스
package com.test01;
public class MethodTest02 {
public static void main(String[] args) {
// static인 경우
// class.method() 형태로 호출
MethodTest01.publicMethod();
MethodTest01.protectedMethod();
MethodTest01.defaultMethod();
// non-static인 경우
// class 변수 = new class();
// 변수.method() 형태로 호출
MethodTest01 method01 = new MethodTest01();
method01.nonStaticMethod();
}
}
출력 결과
com.test02 패키지의 MethodTest03 클래스
package com.test02; // 다른 패키지!
import com.test01.MethodTest01; // 다른 패키지면 import해야 합니다.
public class MethodTest03 {
public static void main(String[] args) {
MethodTest01.publicMethod();
//MethodTest01.protectedMethod(); // 상속(extends)을 하지 않았기 때문에 에러납니다.
MethodTest01 method01 = new MethodTest01();
method01.nonStaticMethod();
}
}
출력 결과
*** 참고 ) method 이름 규칙
- is~ : 인지 아닌지
- has~ : ~를 가지고 있는지
- to~ : ~하자
'Language > Java' 카테고리의 다른 글
인터페이스와 추상클래스의 차이..? (0) | 2022.06.08 |
---|---|
equals() & hascode() 메서드 재정의가 필요할 때는 언제인가? (0) | 2022.01.30 |
Java 소켓 통신 이란? (0) | 2022.01.07 |
String, StringBuffer, String Builder 차이점, 설명 (0) | 2022.01.03 |
최근댓글