EEALL@ONCE
☕ 클래스 - static 이란? 본문
public class Book {
// 필드 (인스턴스 변수)
String title;
String author;
int pageCount;
// 인스턴스 메소드 - static을 붙이지 않음
String getInfo() {
return "이 책은 '%s'라는 제목의 책으로, 저자는 %s이며, 페이지 수는 %d쪽입니다."
.formatted(title, author, pageCount);
}
}
public class Main {
public static void main(String[] args) {
Book myBook = new Book();
myBook.title = "Java Programming";
myBook.author = "John Smith";
myBook.pageCount = 300;
String bookInfo = myBook.getInfo();
System.out.println(bookInfo);
}
}
🚩 인스턴스 메소드에는 static을 붙이지 않는 이유 :
"static" 키워드는 Java에서 메서드나 필드를 정적으로 만들 때 사용됩니다. 정적(static) 멤버는 클래스 자체에 속하며 인스턴스와는 독립적으로 동작합니다.
메서드에 "static" 키워드가 없는 경우, 해당 메소드는 인스턴스 메소드로 정의됩니다. 이것은 해당 메소드가 특정 인스턴스에 종속적이며, 해당 인스턴스 내의 데이터나 필드를 사용할 수 있음을 의미합니다.
따라서 코드에서 "static" 키워드를 사용하지 않는 이유는 이 메소드를 인스턴스의 상태나 데이터에 접근할 수 있도록 만들고자 하는 것입니다. 예를 들어, 'intro' 메소드에서 'no'와 'name' 필드를 사용하려면 이 메소드가 특정 인스턴스에 종속되어야 합니다. 인스턴스 메소드로 정의된 메소드는 각각의 인스턴스에 대해 고유한 값을 반환할 수 있으며, 이것이 클래스의 주요 목적 중 하나입니다.
정적(static) 메소드는 클래스 수준에서 동작하며 특정 인스턴스와는 상관없는 작업을 수행할 때 사용됩니다. 그러나 'intro' 메소드는 'no'와 'name' 필드와 관련이 있으므로 인스턴스 메소드로 정의되어야 합니다.
내가 이해한 static 과 instance의 개념은 이렇다..
예를 들어...
직장인 이라는 class 가 있고
'나'라는 인스턴스가 있다.
직장인은 최저시급은 받는다. <- 최저시급은 static으로 해서 인스턴스에 관계없이 지정해 줄 수 있다.
하지만, '나'는 최저시급보다 더 높은 연봉을 받는다.
따라서 연봉은 '나'라는 인스턴스를 통해서만 지정되어야한다..
🚩 "정적(static)"이라는 용어는 프로그래밍에서 다양한 컨텍스트에서 사용됩니다. 여기서는 Java 프로그래밍에서 "정적"이 무엇을 의미하는지 설명하겠습니다.
1. **정적(static) 변수**:
- 정적 변수는 클래스 수준에서 선언되며 모든 인스턴스(객체)가 공유합니다. 따라서 클래스의 모든 인스턴스가 동일한 변수 값을 공유하게 됩니다.
2. **정적(static) 메소드**:
- 정적 메소드는 클래스 수준에 속하며 특정 인스턴스에 종속되지 않습니다. 인스턴스를 생성하지 않고도 클래스 이름을 통해 호출할 수 있습니다.
3. **정적(static) 블록**:
- 정적 초기화 블록은 클래스가 로드될 때 실행되는 블록으로, 클래스 수준의 초기화 작업에 사용됩니다.
4. **정적(static) 상수**:
- 상수는 변경할 수 없는 값으로 정의되며, 주로 정적(static)으로 선언됩니다. 이러한 상수는 클래스 수준에서 사용될 수 있으며 값을 변경할 수 없습니다.
"정적"은 주로 클래스 수준에서 사용되며, 특정 인스턴스와는 독립적입니다. 이것은 모든 인스턴스가 해당 정적 멤버(변수 또는 메소드)를 공유하고, 클래스의 인스턴스를 만들지 않고도 클래스 이름을 통해 액세스할 수 있음을 의미합니다.
예를 들어, `Math` 클래스의 메소드인 `Math.max()`는 정적 메소드로, 어떠한 `Math` 클래스의 인스턴스도 생성하지 않고 사용할 수 있습니다. 또한, 상수 `Math.PI` 역시 정적 상수로 정의되어 있습니다.
'언어💻 > 자바☕' 카테고리의 다른 글
☕참조형(Reference Type)이 뭘까? (0) | 2023.10.17 |
---|---|
☕생성자 메소드 (1) | 2023.10.17 |
☕ 인스턴스란(객체)? (0) | 2023.10.16 |
☕FTP 서버에 파일을 업로드 (0) | 2023.09.11 |
☕Calendar calendar (0) | 2023.09.05 |