자바에서 메서드를 짤때 public static void 메서드명(파라미터) { }
이렇게 짜게 된다. 그러면 여기서 static은 뭘까?
static - class method
no static - instance method
라고 한다 음... static은 클래스에서 쓰고
no static은 인스턴스 선언 시 사용 한다고 한다
public class WhatisStatic {
//static - class method
//no static - instance method
public static void main(String[] args) {
//instance
Print t1 = new Print(); //t1은 Print의 instance
t1.delimiter = "=";
//메소드가(a) 인스턴스의 소속일 때는 static을 빼줘야한다
t1.a();
String delimiter="-";
Print.b(delimiter);
}
}
class Print{
public String delimiter;
public void a() {
System.out.println(this.delimiter);
}
public static void b(String delimiter) {
System.out.println(delimiter);
}
}
public static void b(String delimiter) {
System.out.println(delimiter);
}
우선 Print 클래스에 public static void b(String delimiter) {} 를 보면
위에서 썻던 것처럼 static이 있음으로 클래스 메소드이기 때문에
Print.b(delimiter);
//Print.a();
Print.b(delimiter); 가 실행이 된다!!
근데 Print.a(); 는 오류가뜬다 이유 - static이 없어서
t1이라는 Print의 instance 선언 후
Print t1 = new Print(); //t1은 Print의 instance
t1인스턴스에
public String delimiter;
delimiter라는 String이 있으므로
t1.delimiter = "=";
라고 값을 준다
그런다음 t1에 a()메소드를 호출하면
t1.a();
= 값이 나온다
즉, static은 클래스 메소드!!
'IT 관련 > JAVA' 카테고리의 다른 글
자바 상속(inheritance) (0) | 2022.03.29 |
---|---|
자바 객체지향 프로그래밍(클래스,인스턴스,static,생성자와this) (0) | 2022.03.29 |
자바 public ,protected , default, private (0) | 2022.03.25 |
자바 메소드(java method)란? (0) | 2022.03.25 |
HashSet , HashMap , HashMap<String, HashSet<String>>, 이중 map 사용 (0) | 2022.03.17 |