JAVA/JAVA Theory
[JAVA] 4. Method() : 접근 제한자 와 메모리 영역
쟌쥰
2019. 11. 13. 19:47
method()
- 접근제한자 메모리영역 리턴타입 메서드이름(파라미터) { } //이러한 형태로 생성할 수 있다.
- parameter :
- arguments :
접근 제한자
public (+) : class외부 어디서든 참조 가능
protected (#) :
- 상속일 경우 : 상속된 곳에서 접근 가능
- 상속이 아닐 경우 : 같은 패키지 내에서 접근 가능
(default) (~) : 같은 패키지 내에서만 참조 가능
private (-) : 현재 클래스 내에서만 참조 가능
메모리 영역
static :
- Application이 실행되면 모두 메모리에 할당되고, Application 종료시 삭제 된다.
- 객체를 생성하지 않고 ( 클래스명.메서드명 ) 으로 호출
(non - static) :
- class 의 인스턴스를 생성할 때 메모리에 할당 된다.
- 객체를 생성하여 객체명.메서드명 으로 호출
실습 TEST
접근제한자와 메모리영역에 관한 코드를 테스트 해보기 위한 실습 환경 (클래스 구성도) 입니다.
Objectaid 다운로드 및 사용법은 다시 포스팅 하겠습니다.
package com.test01;
public class MethodTest01 {
//Method : 기능 (명령문들의 집합)
public static void main(String[] args) {
//class.method() : 형태로 호출
MethodTest01.publicMethod();
MethodTest01.protectedMethod();
defaultMethod();
privateMethod();
}
//접근제한자 메모리영역 리턴타입 메소드이름(파라미터){
// 블록 = 바디
//}
//public (+) : 어디서나 접근, 참조 가능
public static void publicMethod() {
System.out.print("접근제한자 1. ");
System.out.println("public");
}
//protected (#)
//상속일 경우 : 상속된 곳에서
//상속이 아닐 경우 : 같은 패키지 내에서
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!");
}
}
package com.test01;
public class MethodTest02 {
public static void main(String[] args) {
//메모리 영역 : static / (non-static)
//static : class.method();
MethodTest01.publicMethod();
MethodTest01.protectedMethod();
MethodTest01.defaultMethod();
//MethodTest01.privateMethod(); //private메서드는 not visible
//MethodTest01.abc(); //선언되지 않은 메서드는 undefined
//(non-static)
//class 변수 = new class();
//변수.method();
MethodTest01 methodtest01 = new MethodTest01();
methodtest01.nonStaticMethod();
//MethodTest01.nonStaticMethod();
}
}
package com.test02;
import com.test01.MethodTest01;
public class MethodTest03 {
public static void main(String[] args) {
MethodTest01.publicMethod();
//MethodTest01.protectedMethod();
//MethodTest01.defaultMethod();
//MethodTest01.privateMethod();
MethodTest01 methodtest01 = new MethodTest01();
methodtest01.nonStaticMethod();
}
}