티스토리 뷰
JAVA/이론
[JAVA] method (메소드 / 메서드) - public , protected , default , private , static , non-static
printf100 2019. 11. 18. 21:39method : 기능 (명령문들의 집합)
-
클래스 안에 있어야 합니다.
-
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~ : ~하자
'JAVA > 이론' 카테고리의 다른 글
[JAVA] static 변수와 static 메소드 (0) | 2019.11.27 |
---|---|
[JAVA] 배열 ( Array ) 사용하기 - 선언 , 초기화 , 출력 , 복사 (0) | 2019.11.27 |
[JAVA] 형 변환 - 묵시적 형 변환 , 명시적 형 변환 (0) | 2019.11.18 |
[JAVA] Type - 변수 , 자료형 , 타입 (0) | 2019.11.18 |
[JAVA] java.lang.Math의 random() , java.util.Random 사용하기 (1) | 2019.11.13 |