웹풀스택 공부 중
15 - 3. Java - Static 본문
Static: 인스턴스화 없이 바로 사용 가능
객체를 만들지 않고도 사용할 수 있는 Field, Method, Class 이다
정적 Field: 이것은 Static Method에서 바로 사용이 가능하다
- static을 사용할때 주로
final
을 같이 쓴다- 값이 바뀌는걸 방어한다
public
도 같이 사용한다- 어차피 넘기기 위한 용도이기에…
- 비밀스럽게 Static Method에서만 사용하고 싶을땐 private을 붙여도 상관은 ㅇ
- static을 사용할때 주로
정적 Method: 속한 클래스의 인스턴스 없이 사용 가능한 메서드이다
유틸리티 관련 메서드를 만드는데 유용하게 사용된다
Parameter만 받아서 사용하는 Method는 Static으로 사용하는게 좋다
- Field가 없는 Method를 뜻하는거다
- 어떤곳에도 의존하지 않기에 객체를 만들 필요가 없다!
@RequiredArgsConstructor public final class Member { // 모든 Member는 한국대에 속한다 public static String school = "한국대"; ...
- Field가 없는 Method를 뜻하는거다
// main
Member member = new Member(1,"Aron");
// 아래는 불가능
System.out.println(member.school);
// 아래가 가능하다 <- Static이기 때문에
System.out.println(Member.school);
```
- 정적 Class
- 인스턴시 없이 사용 가능한 Nested Class이다
- 상위 클래스를 인스턴스화 해야하니 `new new` 를 통해 두번 인스턴스화를 했어야하나, 정적 Class라면 그럴필요가 없다
- 정적 Class는 Inner Class만 정적으로 만들어준다
- 그 Inner Class를 가진 Class는 `final` 로 만들어주는게 좋다
- 왜 사용하는가?
- 클래스안에 Inner Class 안에 Static Method가 있을때 Inner Class가 아니더라도 그 Static Method를 사용할 수 있다
- Inner Class를 Static으로 했을때 Static field에 대한 접근을 줄 수 있다
- Static Class는 딱히 쓸일이 많지 않긴 하다
```java
// 비교해보기
// 정적 Class가 아닐때 인스턴스화:
OuterClass.InnerClass innerObject
= new OuterClass().new InnerClass();
// 정적 Class
OuterClass.NestedStaticClass printer
= new OuterClass.NestedStaticClass();
```
- 클래스 안에 클래스인 Inner or Nested Class를 뜻한다
```java
public static class Item{...}
// main
Member.Item item = new Member.Item();
```
- 계층을 만들 수도 있다!
```java
public static class Item{
public static void current(){
System.out.println("필통");
}
}
// main
Member.Item item = new Member.Item();
Member.Item.current();
```
반응형
'웹개발 > Java' 카테고리의 다른 글
15 - 5. Java - Abstract Class vs Interface (0) | 2024.11.04 |
---|---|
15 - 4. Java - Generic & 자료 구조 (0) | 2024.11.04 |
15 - 1. Java - Lombok (0) | 2024.11.04 |
14 - 5. Java - Builder & 정적 팩토리 메서드 (1) | 2024.11.04 |
14 - 4. Java - Object 생성자 (0) | 2024.11.04 |